从 didReceiveRemoteNotification 加载故事板视图控制器

Posted

技术标签:

【中文标题】从 didReceiveRemoteNotification 加载故事板视图控制器【英文标题】:load storyboard viewcontroller from didReceiveRemoteNotification 【发布时间】:2014-12-03 09:17:43 【问题描述】:

我使用了故事板。该应用是基于标签栏控制器的。

点击推送通知时,我想从情节提要中打开特定的“通知事件”视图控制器。” 我不知道didReceiveRemoteNotification 中的代码是什么。

我的代码是:

NSString *notification = [[userInfo valueForKey:@"aps"] valueForKey:@"alert"];

Dashboard *ds = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"Dashboard"] ;
NotificationTable *nt = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"NotificationBoard"] ;

UIStoryboardSegue *segue = [UIStoryboardSegue segueWithIdentifier:@"NotificationBoardTable"
                                                           source:ds
                                                      destination:nt
                                                   performHandler:^
                                                   ];

[ds performSegueWithIdentifier:@"NotificationBoardTable" sender:ds];

【问题讨论】:

朋友们,有谁能帮帮我吗? 你的意思是在收到远程通知后要更改 ViewController 吗? 你完全是老兄。 @horst 【参考方案1】:

让我们看看这是不是你想要的:

[[NSNotificationCenter defaultCenter] postNotificationName:kReceiveNotification object:nil userInfo:YOUR_DATA_PASSING];

然后在您的自定义选项卡视图控制器中接收它:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(YOUR_HANDLE_METHOD:) name:kReceiveNotification object:nil];

释放时不要忘记移除观察者:

[[NSNotificationCenter defaultCenter] removeObserver:self];

终于在那个方法中:

[self setSelectedIndex:xxx];//If you want to switch tab

【讨论】:

好吧,我也试过了。但是应用程序没有在后台运行。如何在远程通知到来时发布和处理通知。因为当通知到来时“didReceiveRemoteNotification”不再被调用。 如果您通过点击通知启动应用程序,您需要在 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions NSDictionary *userInfo = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey]; if (userInfo == NULL) NSLog(@"didFinishLaunchingWithOptions 用户启动 userinfo: %@", userInfo); else NSLog(@"didFinishLaunchingWithOptions 通知启动 userinfo: %@", userInfo);

以上是关于从 didReceiveRemoteNotification 加载故事板视图控制器的主要内容,如果未能解决你的问题,请参考以下文章

从 didReceiveRemoteNotification 加载故事板视图控制器

didReceiveRemoteNotification 从 tabbarcontroller 推送视图控制器

除非应用程序从通知中恢复,否则不会调用 didReceiveRemoteNotification

didReceiveRemoteNotification presentViewController 在运行时从任何地方

didReceiveRemoteNotification 时更改视图

didReceiveRemoteNotification 和模态视图