iPad用のiOSアプリを開発しています。HelpShift というサービスでプッシュ通知を使用しています。ユーザーが通知をタップしたときにコードを実行したいと思います。アプリがアクティブな場合は実際に機能しますが、バックグラウンドまたは非アクティブな場合は機能しません。これが私のコードです:
- (void) application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
if ([[userInfo objectForKey:@"origin"] isEqualToString:@"helpshift"]) {
    UIApplicationState state = [application applicationState];
    if (state == UIApplicationStateActive) {           
        UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"You were answered in HelpShift"
                                                            message:@"Hello"
                                                           delegate:self
                                                  cancelButtonTitle:@"Cancel"
                                                  otherButtonTitles:@"Show", nil];
        [alertView show];
    } if (state== UIApplicationStateBackground) {
        UIViewController *vc = self.window.rootViewController;
        [[Helpshift sharedInstance] handleNotification:userInfo withController:vc];            
         [self showHelpShift];
    } if (state == UIApplicationStateInactive) {
        UIViewController *viewController =
        [[UIStoryboard storyboardWithName:@"MainStoryboard"
                                   bundle:NULL] instantiateViewControllerWithIdentifier:@"home"];
        [[Helpshift sharedInstance] handleNotification:userInfo withController:viewController];
    }        
   }
 }
 - (void) showHelpShift {
     UIViewController *vc = self.window.rootViewController;
     [[Helpshift sharedInstance] showSupport:vc];
  }
- (void)alertView:(UIAlertView *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex{
  if (buttonIndex == 1){
    UIViewController *vc = self.window.rootViewController;
    [[Helpshift sharedInstance] showSupport:vc];}
 }
ご覧のとおり、問題は [self showHelpShift] が呼び出されないか、早期に呼び出されることです。