applicationState 是 UIApplicationStateInactive 在 application:didReceiveRemoteNotification:fetchComple

Posted

技术标签:

【中文标题】applicationState 是 UIApplicationStateInactive 在 application:didReceiveRemoteNotification:fetchCompletionHandler:【英文标题】:applicationState is UIApplicationStateInactive in application:didReceiveRemoteNotification:fetchCompletionHandler: 【发布时间】:2015-06-24 20:11:21 【问题描述】:

当推送通知到达时,它会在后台播放音频,使用 application:didReceiveRemoteNotification:fetchCompletionHandler:。

要开始,我先按主页按钮,然后按锁定屏幕按钮,然后屏幕关闭,然后发送推送通知。当应用程序状态为 UIApplicationStateBackground 并且我通过将其记录到文件来查看状态时,此方法有效。然而,有时当应用程序在后台运行时,它会在 application:didReceiveRemoteNotification:fetchCompletionHandler: 之前神秘地进入前台,并且应用程序状态在 application:didReceiveRemoteNotification:fetchCompletionHandler: 中为 UIApplicationStateInactive。这是日志:

AppDelegate applicationDidEnterBackground: called
AppDelegate applicationWillEnterForeground: called
AppDelegate application:didReceiveRemoteNotification:fetchCompletionHandler: called. currentThread 0x174261900 isMainThread 1
AppDelegate application:didReceiveRemoteNotification:fetchCompletionHandler: applicationState == UIApplicationStateInactive

在应用程序中的某些手机上:didReceiveRemoteNotification:fetchCompletionHandler:它始终显示 UIApplicationStateBackground,而在其他手机上它是 UIApplicationStateInactive。知道为什么会这样吗?

【问题讨论】:

【参考方案1】:

在现代操作系统中,后台进程要么被“暂停”,因此它们可以更快地被拉起(状态为UIApplicationStateBackground),或者它们的内存被释放以将内存分配给更前端的进程。在这种情况下,它将成为您的UIApplicationStateInactive。当您的设备有一个紧张的进程并需要 RAM 时,就会发生这种情况。

【讨论】:

ios 中,当点击主页按钮时,打开的应用程序会从 UIApplicationStateActive 转换到 UIApplicationStateInactive 再到 UIApplicationStateBackground。我正在尝试确定它不会进入后台状态的原因。

以上是关于applicationState 是 UIApplicationStateInactive 在 application:didReceiveRemoteNotification:fetchComple的主要内容,如果未能解决你的问题,请参考以下文章

什么是 FNFPlayer?它从后台线程访问 UIApplication applicationState

主线程检查器:在后台线程上调用的 UI API:-[UIApplication applicationState]

UIApplication

禁用 UrbanAirship 警报

Firebase - 推送通知 - 不工作

后台任务未运行