1

我用UILocalNotification. 当他从通知中启动我的应用程序时,如果它在后台,我的应用程序将变为活动状态。我如何知道应用程序已从通知中唤醒(活动)?

4

2 回答 2

6

这取决于。

如果您的应用程序根本没有运行,那么该应用程序将被启动。当你-application:didFinishLaunchingWithOptions:被调用时,选项字典将包含UIApplicationLaunchOptionsLocalNotificationKey(值为UILocalNotification)。因此,是否存在UIApplicationLaunchOptionsLocalNotificationKey可以告诉您您的应用程序是否通过对本地通知的响应启动。

如果收到通知时您的应用程序已经在运行,则将-application:didReceiveLocalNotification:调用该方法。请注意,如果您的应用程序位于前台或后台,则会调用此方法。所以,检查applicationState:如果状态是,UIApplicationStateActive那么应用程序处于活动状态并且在前面;如果UIApplicationStateInactive然后用户点击操作按钮来响应通知。

于 2013-05-23T12:04:20.427 回答
2

有两种情况你必须处理..

  1. 应用程序未运行
    在未运行状态下,当应用程序收到通知时,应用程序将被启动。在 应用程序中didFinishLaunchingWithOptions:您可以检查应用程序是否由于通知而启动

    UILocalNotification *notification = [launchOptions objectForKey:UIApplicationLaunchOptionsLocalNotificationKey];
    
    if (notification)
    {
      // application launched due to notification
    }
    
  2. 在后台运行的应用程序
    在这种情况下,您将收到对应用程序 didReceiveLocalNotification 的调用:如果您的 appDelegate 实现此方法

    -(void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
    {
    
    }
    
于 2013-05-23T11:58:34.690 回答