当用户在 iOS 5 上锁定屏幕时 applicationMusicPlayer 停止

Posted

技术标签:

【中文标题】当用户在 iOS 5 上锁定屏幕时 applicationMusicPlayer 停止【英文标题】:applicationMusicPlayer stops when user locks the screen on iOS 5 【发布时间】:2011-10-05 09:32:25 【问题描述】:

我将音频会话类别设置为 kAudiosessionCategory_MediaPlayback,我激活了会话,它没有返回任何错误,当我锁定设备时,iPod 音乐仍然停止。这发生在 iOS 5 GM 上,所以我猜这将在最终版本中发生。在 iOS 4+ 上,当前代码可以正常工作。任何想法如何解决这一问题?非常感谢:)

【问题讨论】:

iOS 5 仍受保密协议保护,因此大多数了解此内容的人不会公开回答。您不妨试试 Apple 开发者论坛。 好点 :) 谢谢! 遇到类似问题,请在此处发布问题:devforums.apple.com/message/561581#561581 我认为这是 iOS 5 中的错误。 其实我认为这是 XCode 4.2 中的一个 bug。我用 XCode 4.1 编译了完全相同的代码,它在设备上运行良好,即使它运行的是 iOS 5.0 【参考方案1】:

这不是错误。为了省电,手机现在被视为用户按下了主页按钮。 applicationMusicPlayer 现在在锁定时停止这一事实只是此更改的副作用。

要解决这个问题,您应该切换到 AVPlayer 并在后台模式下使用 iOS 4 的音频。

【讨论】:

谢谢你,voidStern!我尝试使用 AVPlayer,但是当设备被锁定时它仍然静音。我理解为什么 iOS 5 将应用程序发送到后台模式,但我认为他们应该尊重设置为媒体播放的音频会话类别,并且至少继续播放声音......还有其他想法吗?再次感谢! 您是否在 info.plist 中设置了背景音频类别?如果您做对了所有事情,即使您通过主页按钮退出应用程序,它也应该继续播放。 (如果您不希望这样,您必须在 App Delegate 中停止播放) 我做了,但它仍然停止。但在我的情况下,问题是屏幕锁定时声音停止,按下主页按钮时声音停止。 ...但由于 iOS5 锁定屏幕并按下主页按钮,就您的应用而言,实际上是相同的事情。 是的,不幸的是......到目前为止我发现的唯一解决方案并不好:1. 使用 XCode 【参考方案2】:

针对我的特定问题修复了此问题 - 如何在设备进入锁定屏幕时检测 OS4 和 OS5 行为之间的差异。

在 OS4 应用程序中执行“applicationWillResignActive”,但在 OS5 中它一直到“applicationDidEnterBackground”,这看起来与用户点击主页按钮完全相同。

事实证明,如果您检查'- (void)applicationDidEnterBackground:(UIApplication *)application' 中给出的应用程序的 UIApplicationState,它有 3 个可能的值:

typedef enum 
   UIApplicationStateActive,
   UIApplicationStateInactive,
   UIApplicationStateBackground
 UIApplicationState;

当用户在 OS5 上点击 home 时,你会得到 UIApplicationStateBackground,但是当用户点击 Lock 时,你会得到 UIApplicationStateInactive。

希望对您有所帮助。

祝大家节日快乐。

【讨论】:

以上是关于当用户在 iOS 5 上锁定屏幕时 applicationMusicPlayer 停止的主要内容,如果未能解决你的问题,请参考以下文章

iOS 本地通知不会在锁定屏幕上播放声音

将移动应用程序启动图标放在通知屏幕上以从锁定设备启动

应用程序暂停时如何在 iPhone 上获取屏幕锁定/解锁事件?

当应用程序在后台时扫描外围设备(例如,当屏幕锁定时)

当应用程序在后台时扫描外围设备(例如屏幕锁定时)

iOS 在锁定屏幕时停止寻找信标