【问题标题】:Method called when a push notification banner is selected选择推送通知横幅时调用的方法
【发布时间】:2012-08-12 23:46:25
【问题描述】:

我有一个要发送给用户的推送通知,我希望能够在他们点击它时采取行动。我知道如果应用程序在前台、后台,或者如果用户点击通知中心的警报,则在应用程序委托中调用了以下方法:

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

但是,如果应用程序未启动并且用户在通知到达后立即点击通知横幅,则似乎不会调用此方法。在这种情况下,我需要采用不同的方法吗?他们的其他情况是否也应该实施其他方法?

【问题讨论】:

    标签: xcode ios5 apple-push-notifications


    【解决方案1】:

    如果您的应用在单击通知横幅时未启动,那么您将在application:didFinishLaunchingWithOptions: 中收到一个 NSDictionary。

    然后你可以这样做:

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
      NSDictionary *pushDict = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
      if(pushDict)
      {
        [self application:application didReceiveRemoteNotification:pushDict];
      }
    }
    

    此外,在您的application:didReceiveRemoteNtification: 方法中,您可以测试您的应用程序在收到通知时是否处于非活动状态,如下所示:

    -(void)application:(UIApplication *)app didReceiveRemoteNotification:(NSDictionary *)userInfo
    {
      if([app applicationState] == UIApplicationStateInactive)
      {
        NSLog(@"Received notifications while inactive.");
      }
      else
      {
        NSLog(@"Received notifications while active.");
      }
    

    【讨论】:

    • didFinishLaunchingWithOptions 中的部分是我所缺少的 - 谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-07
    • 1970-01-01
    • 2013-09-07
    • 2019-04-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多