众所周知,如果iOS应用程序正在运行前台,那么应用程序将不会在删除通知到来时通知用户.现在在我的应用程序中,我想显示警告以通知用户远程通知到来.如何判断应用程序是运行前台还是后台?我找到了docs并搜索了stackoverflow.com,却找不到任何相关内容.谢谢.
Pav*_*yan 73
[UIApplication sharedApplication].applicationState 将返回当前状态,检查可能的值,并在您可以使用系统功能时不创建不必要的标志.
您可能需要考虑的值:
例如
+(BOOL) runningInBackground
{
UIApplicationState state = [UIApplication sharedApplication].applicationState;
return state == UIApplicationStateBackground;
}
+(BOOL) runningInForeground
{
UIApplicationState state = [UIApplication sharedApplication].applicationState;
return state == UIApplicationStateActive;
}
Run Code Online (Sandbox Code Playgroud)
有些情况下检查状态不起作用.
这是我遇到的一个问题:如果你试图使用BT并且它被禁用,iOS会弹出一个对话框,询问用户是否想要打开BT.发生这种情况时,应用程序状态不是确定您的应用程序是否位于前台的可靠方法.
首先,您将获得两个applicationDidBecomeActive事件 - 一个(正确)当应用程序出现时,然后另一个(不正确)用户按下对话框中的按钮(而iOS设置是最前面的应用程序).
即使不是这种情况,UIApplication.applicationState也会说"Active"(至少如果你将"active"解释为在前台,就像原始问题一样).
由于你没有在第一次启动时获得willEnterForeground,检测应用程序是否可见的唯一可靠方法(据我能够弄清楚)是有一个标志,然后将其设置为true:
applicationDidFinishLaunching
applicationWillEnterForeground
Run Code Online (Sandbox Code Playgroud)
和错误:
applicationDidEnterBackground
applicationWillResignActive
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
23082 次 |
| 最近记录: |