4

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

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

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

4

1 回答 1

4

如果单击通知横幅时您的应用程序未启动,那么您将在application:didFinishLaunchingWithOptions:.

然后你可以做这样的事情:

- (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.");
  }
于 2012-08-13T00:09:32.773 回答