众所周知,如果iOS应用程序在前台运行,则当收到移除通知时,应用程序不会通知用户。现在,在我的应用程序中,我想显示警报以通知用户远程通知已到达。如何判断应用程序是在前台还是后台运行?我已经找到了文档并搜索了stackoverflow.com,但没有找到有关这方面的任何信息。 谢谢。
众所周知,如果iOS应用程序在前台运行,则当收到移除通知时,应用程序不会通知用户。现在,在我的应用程序中,我想显示警报以通知用户远程通知已到达。如何判断应用程序是在前台还是后台运行?我已经找到了文档并搜索了stackoverflow.com,但没有找到有关这方面的任何信息。 谢谢。
[UIApplication sharedApplication].applicationState
会返回当前状态,请检查可能的值,并在可以使用系统功能时不要创建不必要的标志。
您可能需要考虑的值:
例如:
+(BOOL) runningInBackground
{
UIApplicationState state = [UIApplication sharedApplication].applicationState;
return state == UIApplicationStateBackground;
}
+(BOOL) runningInForeground
{
UIApplicationState state = [UIApplication sharedApplication].applicationState;
return state == UIApplicationStateActive;
}
applicationDidFinishLaunching
applicationWillEnterForeground
在以下情况下为false:
applicationDidEnterBackground
applicationWillResignActive
applicationDidFinishLaunching
,并且会认为它在前台运行(因为您不会收到applicationWillEnterForeground
),但实际上根据applicationState
的正确状态,它是在后台运行的。所以Pavel Oganesyan是正确的,但您需要检查UIApplicationStateActive
和UIApplicationStateInactive
状态以获取正确的前台状态。 - Shebuka