jim*_*buk 3 application-state background-foreground ios uilocalnotification
我的应用代表中有代码
application:didReceiveLocalNotification:
Run Code Online (Sandbox Code Playgroud)
每当我的应用程序在前台时,显示该本地通知的UIAlertView的方法.
如果我的应用程序在本地通知到达时在后台,则会向用户显示通知,并且可以通过选择启动应用程序.在这种情况下,我的应用程序来到我的App代表的前台
applicationWillEnterForeground:
Run Code Online (Sandbox Code Playgroud)
叫做.然后再次调用didReceiveLocalNotification方法,导致UIAlertView再次出现.但实际上,当应用程序处于后台时,用户已经有了警报,所以理想情况下我不希望再次显示此警报.
我可以看到,如果一个应用程序是由于本地通知而启动的话
application:didFinishLaunchingWithOptions:
Run Code Online (Sandbox Code Playgroud)
您可以检查密钥的启动选项的方法
UIApplicationLaunchOptionsLocalNotificationKey
Run Code Online (Sandbox Code Playgroud)
要知道本地通知是否导致您的应用程序启动,但是当用户与本地通知进行交互而刚刚返回到前台时,似乎没有找到此方法的方法.
检查我的applicationWillEnterForeground方法是否最近被调用似乎是一个讨厌这个问题的方法,或者类似于这个问题中给出的答案" iOS如何判断应用程序是运行前景还是后台? "将允许我检查
[UIApplication sharedApplication].applicationState
Run Code Online (Sandbox Code Playgroud)
从我的内心
application:didReceiveLocalNotification:
Run Code Online (Sandbox Code Playgroud)
方法.希望它能够及早收到,在这种情况下我的applicationState仍然不会被设置为UIApplicationStateActive.
或者有更好的解决方案吗?
干杯
在AppDelegate中,您可以在应用程序收到通知时检查应用程序的状态
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
{
UIApplicationState state = [application applicationState];
// check state here
if(state ==UIApplicationStateBackground ){
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5021 次 |
| 最近记录: |