【发布时间】:2014-01-13 07:28:19
【问题描述】:
当我发送推送通知并且我的应用程序处于打开状态或在后台并单击推送通知时,我的应用程序将重定向到 PushMessagesVc viewController(如预期的那样)
我使用如下代码:
-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
UIStoryboard *mainstoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
PushMessagesVc *pvc = [mainstoryboard instantiateViewControllerWithIdentifier:@"PushMessagesVc"];
[self.window.rootViewController presentViewController:pvc
animated:YES
completion:NULL];
}
上面的代码/场景没有问题,但是如果应用程序关闭并且我点击推送通知,在这种情况下应用程序不会重定向我的PushMessagesVc viewController 并且应用程序停留在主屏幕上.
对于第二种情况,我使用以下代码:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
sleep(1);
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeNone)];
[UIApplication sharedApplication].applicationIconBadgeNumber = 1;
NSDictionary *userInfo = [launchOptions valueForKey:@"UIApplicationLaunchOptionsRemoteNotificationKey"];
NSDictionary *apsInfo = [userInfo objectForKey:@"aps"];
if(apsInfo) {
UIStoryboard *mainstoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
PushMessagesVc* pvc = [mainstoryboard instantiateViewControllerWithIdentifier:@"PushMessagesVc"];
[self.window.rootViewController presentViewController:pvc animated:YES completion:NULL];
return YES;
}
return YES;
}
但在这种情况下,PushMessagesVc 不会出现。
【问题讨论】:
-
我该如何解决我的问题?
-
您在调试控制台中收到的警告或错误是什么?哪个
viewController是您故事板中最初的viewController?实际上...截取情节提要的屏幕截图并将其包含在答案中。 -
没有错误,如果应用程序没有打开,当推送消息来时我点击消息应用程序停留在主视图控制器中,因为 if(apsInfo) 块在这种情况下不起作用。跨度>
-
hm... 而不是
[self.window.rootViewController presentViewController:pvc animated:YES completion:NULL];试试这个[self.window setRootViewController:pvc]。 (重新编译,在设备上运行...但不要误会,这不是您问题的确切答案,只是检查if(apsInfo)块是否执行)跨度> -
非常感谢,正确答案就是你的答案。它现在正在工作。再次感谢您。
标签: ios cocoa-touch storyboard push-notification