我的应用程序委托中有代码
application:didReceiveLocalNotification:
方法来显示UI警报视图对于本地通知,每当我的应用程序位于前台时。
如果本地通知到达时我的应用程序在后台运行,则用户会收到该通知,并且能够通过选择该应用程序来启动该应用程序。在这种情况下,我的应用程序来到我的应用程序代理的前台
applicationWillEnterForeground:
叫做。后来虽然我的是否收到本地通知方法被再次调用,导致UI警报视图再次出现。但实际上,当应用程序处于后台时,用户已经收到该警报,因此理想情况下我不想再次显示该警报。
我可以看到,如果应用程序由于本地通知而启动,则在
application:didFinishLaunchingWithOptions:
您可以检查密钥的启动选项的方法
UIApplicationLaunchOptionsLocalNotificationKey
了解本地通知是否导致您的应用程序启动,但是当用户刚刚与本地通知交互而将您带回到前台时,似乎没有这样的方法可以找出这一点。
检查我的是否应用程序将进入前台最近调用的方法似乎是解决此问题的一种巧妙方法,或者可能类似于此问题中给出的答案“iOS如何判断应用程序是前台运行还是后台运行? https://stackoverflow.com/questions/8291192/ios-how-to-judge-application-is-running-foreground-or-background“将允许我检查
[UIApplication sharedApplication].applicationState
从我的内心
application:didReceiveLocalNotification:
方法。希望它能尽早收到,这样我的 applicationState 仍然不会被设置为UI应用程序状态活动在这种情况下。
或者对此有什么更好的解决方案吗?
Cheers