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