我一直不解这几个星期,仍然不知道发生了什么事。 该应用程序是安装程序与后台模式播放音频和获取数据。 这款应用程序中背景和屏幕锁屏上。 方法
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从远程推送通知打开应用程序的结果。 正是在这种状态下,当远程推送通知到达并调用方法。 任何人有任何想法,为什么发生这种情况,以及如何预防呢?