我的应用程序委托中包含代码
application:didReceiveLocalNotification:
每当我的应用程序位于前台时,为该本地通知显示 UIAlertView 的方法。
如果本地通知到达时我的应用程序在后台运行,则会向用户显示该通知,并可以通过选择启动该应用程序。在这种情况下,我的应用程序成为我的应用程序代表的前台
applicationWillEnterForeground:
叫做。之后,尽管我的 didReceiveLocalNotification 方法被再次调用,导致 UIAlertView 再次出现。但是实际上,当应用程序在后台时,用户已经收到了该警报,因此理想情况下,我不想再次显示此警报。
我可以看到,如果某个应用是由于本地通知而启动的,则在
application:didFinishLaunchingWithOptions:
您可以检查密钥的启动选项的方法
UIApplicationLaunchOptionsLocalNotificationKey
知道本地通知是否导致您的应用启动,但是当用户与本地通知进行交互只是将您带回前台时,似乎没有找到这种方法的方法。
检查我的 applicationWillEnterForeground 方法最近是否被调用似乎可以解决该问题,或者与该问题“iOS how to judge application is running foreground or background?”给出的答案类似,这将使我能够检查
[UIApplication sharedApplication].applicationState
从我的内心
application:didReceiveLocalNotification:
方法。希望能够尽早收到,以便在这种情况下我的applicationState仍不会设置为 UIApplicationStateActive 。
还是对此有更好的解决方案?
干杯
最佳答案
在AppDelegate中,您可以在应用程序收到通知时检查应用程序的状态
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
{
UIApplicationState state = [application applicationState];
// check state here
if(state ==UIApplicationStateBackground ){
}
}
关于ios - iOS-如何判断本地通知是否导致我的应用进入前台?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23009348/