【问题标题】:iOS click on push notification open concrete viewcontrolleriOS点击推送通知打开具体的viewcontroller
【发布时间】:2014-02-03 20:19:29
【问题描述】:

当用户点击推送通知时是否可以打开具体的viewcontroller

我有新闻应用程序,主视图控制器有很多新闻,当用户点击一些新的时,我会打开下一个视图控制器并描述该新闻。

当用户点击推送通知时,如何打开第二个视图控制器?

我尝试将Notification 发送到我的UINavigationController 并推送两个控制器,但它不能正常工作,它只打开第一个视图控制器。

【问题讨论】:

  • 什么是具体的视图控制器?
  • 当用户点击推送通知时,我可以打开任何视图控制器吗?
  • 当用户点击推送通知时,您可以为所欲为。在您的应用程序委托中,您知道您是通过点击推送还是通过应用程序图标等启动的,然后您可以显示您想要的任何视图控制器。
  • 如果你想要这样做,你不能同时推送两个视图控制器,你可以一个接一个地推送,或者你可以从一个视图控制器堆栈切换到一个新堆栈。无论您的问题是什么,因为您没有清楚地描述或显示任何代码,都与点击通知无关。

标签: ios push-notification


【解决方案1】:

您可以处理您的应用,当您点击本地或推送通知时,在 AppDelegate.m 中实现 application:didReceiveLocalNotification:application: didReceiveRemoteNotification: 方法

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {

}

-(void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification {

}

如果您的应用已关闭(不在后台),您可以验证您是否收到通知

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

    NSDictionary *userInfo = [launchOptions objectForKey: UIApplicationLaunchOptionsRemoteNotificationKey];
    if ( userInfo != nil )
        [self application:application didReceiveRemoteNotification:userInfo];
}

我不知道您是如何处理新闻的,但您可以向主视图控制器发布通知,通知您已收到通知,传递“id”或您的新信息,然后创建您的第二个视图控制器(您需要验证您的MainViewController 是否已经在您的NavigationController 的堆栈中创建):

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {

    [[NSNotificationCenter defaultCenter] postNotificationName:@"IHaveReceivedANotification" object:nil userInfo:userInfo];

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-04
    • 1970-01-01
    相关资源
    最近更新 更多