应用程序唤醒(活动)由UILocalNotification

时间:2013-05-23 11:49:52

标签: ios objective-c uilocalnotification

我正在提示用户UILocalNotification。当他从通知中启动我的应用时,如果它在后台,我的应用就会变为活动状态。我怎么知道应用程序从通知中被唤醒(活动)?

2 个答案:

答案 0 :(得分:6)

取决于。

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

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

答案 1 :(得分:2)

您必须处理两种情况..

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

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

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