当应用程序完全关闭时,在推送通知上推送 ViewController 点按将不起作用

Push ViewController on Push Notification Tap Won't Work When App Is Completely Closed

我希望我的应用程序在用户点击收到的推送通知时推送 NewsViewController。在 didFinishLaunching 我有:

UIUserNotificationType userNotificationTypes = (UIUserNotificationTypeAlert |
                                                    UIUserNotificationTypeBadge |
                                                    UIUserNotificationTypeSound);

    UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:userNotificationTypes
                                                                             categories:nil];

    [[UIApplication sharedApplication]
     registerUserNotificationSettings:settings];
    [application registerUserNotificationSettings:settings];
    [application registerForRemoteNotifications];

然后,仍然在 AppDelegate 中,我有:

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
    [PFPush handlePush:userInfo];
    UINavigationController *nav = (UINavigationController *) self.tabBarController.selectedViewController;
    NewsViewController *dvController8 = [[NewsViewController alloc] initWithNibName:@"NewsViewController" bundle:[NSBundle mainBundle]];
    [nav pushViewController:dvController8 animated:YES];

    if (application.applicationState == UIApplicationStateInactive) {
        UIAlertView *test = [[UIAlertView alloc] initWithTitle:@"INACTIVE" message:@"INACTIVE" delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil];
        [test show];

        [self handleRemoteNotificationWithPayload:userInfo];
    }
}
-(void)handleRemoteNotificationWithPayload:(NSDictionary *)payload {
    UINavigationController *nav = (UINavigationController *) self.tabBarController.selectedViewController;
    NewsViewController *dvController8 = [[NewsViewController alloc] initWithNibName:@"NewsViewController" bundle:[NSBundle mainBundle]];
    [nav pushViewController:dvController8 animated:YES];



}

如果用户在应用程序打开时收到推送,它将转到 NewsViewController。如果当他们点击推送通知时应用程序在后台 运行,它将转到 NewsViewController。但是,如果用户已从应用程序切换器完全关闭应用程序,然后点击收到的通知,它会打开应用程序,而不会转到 NewsViewController。我该如何解决这个问题?

抱歉造成混淆。这是您确定终止的应用程序是通过通知 (userInfo) 还是仅通过图标交互打开的方式:

-(BOOL)application(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
 ...
   NSDictionary *notificationPayload = launchOptions[UIApplicationLaunchOptionsRemoteNotificationKey];
  // Create a pointer to extract the userInfo
  [self handleRemoteNotificationWithPayload:notificationPayload];
...
}

并且在您的方法中,您可以通过简单的交叉引用来确定它是否通过负载打开:

-(void)handleRemoteNotificationWithPayload:(NSDictionary *)payload {
...
    if (payload) {
      //do something or get additional parameters from dictionary to segue alternate views
    }
...
}