我用UILocalNotification
. 当他从通知中启动我的应用程序时,如果它在后台,我的应用程序将变为活动状态。我如何知道应用程序已从通知中唤醒(活动)?
2 回答
这取决于。
如果您的应用程序根本没有运行,那么该应用程序将被启动。当你-application:didFinishLaunchingWithOptions:
被调用时,选项字典将包含UIApplicationLaunchOptionsLocalNotificationKey
(值为UILocalNotification
)。因此,是否存在UIApplicationLaunchOptionsLocalNotificationKey
可以告诉您您的应用程序是否通过对本地通知的响应启动。
如果收到通知时您的应用程序已经在运行,则将-application:didReceiveLocalNotification:
调用该方法。请注意,如果您的应用程序位于前台或后台,则会调用此方法。所以,检查applicationState
:如果状态是,UIApplicationStateActive
那么应用程序处于活动状态并且在前面;如果UIApplicationStateInactive
然后用户点击操作按钮来响应通知。
有两种情况你必须处理..
应用程序未运行
在未运行状态下,当应用程序收到通知时,应用程序将被启动。在 应用程序中didFinishLaunchingWithOptions:您可以检查应用程序是否由于通知而启动UILocalNotification *notification = [launchOptions objectForKey:UIApplicationLaunchOptionsLocalNotificationKey]; if (notification) { // application launched due to notification }
在后台运行的应用程序
在这种情况下,您将收到对应用程序 didReceiveLocalNotification 的调用:如果您的 appDelegate 实现此方法-(void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification { }