【发布时间】:2014-05-25 10:01:23
【问题描述】:
我的应用委托中有代码
application:didReceiveLocalNotification:
每当我的应用在前台时,为该本地通知显示 UIAlertView 的方法。
如果本地通知到达时我的应用程序在后台,则用户会收到通知,并且可以通过选择它来启动应用程序。在这种情况下,我的应用程序会出现在我的 App Delegate 的前台
applicationWillEnterForeground:
被调用。之后,虽然我的 didReceiveLocalNotification 方法再次被调用,导致 UIAlertView 再次出现。但实际上,当应用程序在后台运行时,用户已经收到了该警报,因此理想情况下我不想再次显示此警报。
我可以看到,如果应用程序由于本地通知而启动,那么在
application:didFinishLaunchingWithOptions:
您可以检查键的启动选项的方法
UIApplicationLaunchOptionsLocalNotificationKey
要知道本地通知是否导致您的应用启动,但是当您刚刚被与本地通知交互的用户带回前台时,似乎没有这种方法可以找出这一点。
检查最近是否调用了我的 applicationWillEnterForeground 方法似乎是解决此问题的一种方法,或者可能类似于此问题“iOS how to judge application is running foreground or background?”中给出的答案的方法将使我能够检查
[UIApplication sharedApplication].applicationState
来自我的
application:didReceiveLocalNotification:
方法。希望它能够尽早收到,在这种情况下我的 applicationState 仍然不会设置为 UIApplicationStateActive。
或者有没有更好的解决方案?
干杯
【问题讨论】:
-
谢谢。我稍后会尝试修复.. 干杯。
-
对于那些对 Swift 是如何做到这一点感到好奇的人,可以看看这里,captaindanko.blogspot.com.au/2014/12/…
标签: ios uilocalnotification background-foreground application-state