应用被 UILocalNotification 唤醒(激活)

Posted

技术标签:

【中文标题】应用被 UILocalNotification 唤醒(激活)【英文标题】:app awaked (Active) by UILocalNotification 【发布时间】:2013-05-23 11:49:51 【问题描述】:

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

【问题讨论】:

【参考方案1】:

视情况而定。

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

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

【讨论】:

【参考方案2】:

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

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

    UILocalNotification *notification = [launchOptions objectForKey:UIApplicationLaunchOptionsLocalNotificationKey];
    
    if (notification)
    
      // application launched due to notification
    
    

    应用程序在后台运行 在这种情况下,如果您的 appDelegate 实现此方法,您将收到对 application didReceiveLocalNotification: 的调用

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

【讨论】:

以上是关于应用被 UILocalNotification 唤醒(激活)的主要内容,如果未能解决你的问题,请参考以下文章

如果用户被提醒 x 多次,如何取消所有 UILocalNotification?

UILocalNotification 询问用户权限

IOS UILocalNotification 在我的应用程序被删除后直播...如何处理这些通知?

如何检查被忽略的 UILocalNotification?

UILocalNotification - 应用程序未运行时如何处理?

如何增加/减少 UILocalnotification 的 application.badge 编号