application:didReceiveRemoteNotification:fetchCompletionHandler:调用时不在UIApplicateStateBackground中

时间:2015-07-18 22:09:27

标签: ios objective-c push-notification avaudioplayer

这几周我一直很困惑,但仍然不知道发生了什么。该应用程序设置为后台模式,以播放音频和获取数据。该应用程序是背景的,屏幕在锁屏上。方法

application:didReceiveRemoteNotification:fetchCompletionHandler:
当远程推送到达时,

被调用。奇怪的是,应用程序状态有时会有所不同。以下是不同会议的两个结果:

A)远程推送进来,应用程序状态是UIApplicationStateBackground,这与预期完全一样。这允许.plist中配置的“所需背景模式”正常工作:

2015-07-18 13:26:38.273 x[22430:5297207] AppDelegate applicationWillResignActive: called
2015-07-18 13:26:39.007 x[22430:5297207] AppDelegate applicationDidEnterBackground: called
2015-07-18 13:29:04.181 x[22430:5297207] application:didReceiveRemoteNotification:fetchCompletionHandler: applicationState == UIApplicationStateBackground

B)远程推送进来,但应用程序状态不是UIApplicationStateBackground。出于某种原因,应用程序在调用方法之前开始转换到前台,然后在方法中状态错误地是UIApplicationStateInactive而不是UIApplicationStateBackground:

2015-07-18 12:37:26.087 x[22430:5297207] AppDelegate applicationWillResignActive: called
2015-07-18 12:37:26.899 x[22430:5297207] AppDelegate applicationDidEnterBackground: called
2015-07-18 12:39:20.898 x[22430:5297207] AppDelegate applicationWillEnterForeground: called
2015-07-18 12:39:21.014 x[22430:5297207] application:didReceiveRemoteNotification:fetchCompletionHandler: applicationState == UIApplicationStateInactive

此状态差异可防止播放背景模式音频。请注意,由于从远程推送通知打开应用程序,该方法不处于UIApplicationStateInactive状态。当远程推送通知到达并调用该方法时,处于该状态。任何人都有任何想法为什么会发生这种情况以及如何防止它?

0 个答案:

没有答案