我的应用程序使用AVAudioPlayer播放背景音频,并从iOS接收远程控制事件 . 在播放音频时一切正常,但如果音频暂停并且我的应用程序被移动到后台,则会发生奇怪的事情 . 如果我使用蓝牙设备在10分钟后恢复/取消暂停音频,iOS将使用以下消息终止我的应用:

<MyApp>[633] has active assertions beyond permitted time:
{(
     <SBProcessAssertion: 0x25f520> identifier: com.apple.mediaremote.sendremotecommand process: <MyApp>[633] permittedBackgroundDuration: 600.000000 reason: finishTask owner pid:58
)}

这有两件非常奇怪的事情 .

  • iOS将不会在10分钟时关闭我的应用程序 . 它只会在通过蓝牙接收远程控制命令后才会这样做 .

  • 如果我在耳机上使用iOS的遥控器按钮或遥控器,我的应用程序将继续播放音频而不会有任何问题 .

我无法弄清楚为什么蓝牙遥控器消息会导致iOS终止我的应用程序 . 我已经能够确认Pandora应用程序似乎没有类似的问题 .

有没有人对此有所了解?

Update :进一步测试可以更清楚地描述错误 . 在音频暂停10分钟或更长时间并且应用程序遇到内存不足警告后,尝试恢复背景音频时,似乎会发生应用程序强制iOS崩溃 .

以下步骤是重现错误所必需的:

  • 将应用程序_1015696的音频暂停在后台

  • 导致应用程序遇到内存不足警告(模拟或真实)

  • 尝试使用从蓝牙设备或扬声器底座等设备触发的遥控事件播放音频10分钟后 .

注意:当从外部设备(如蓝牙设备,扬声器底座或汽车适配器)启动最终远程控制事件时,iOS似乎只会强制崩溃应用程序 . 使用iOS的内置“遥控”界面或耳机上的遥控器似乎不会导致崩溃 .

就像George在评论中提到的那样,我已经能够用我自己的App,Pandora和至少一个其他音频播放应用程序重现这一点 . 我已经向Apple提交了一份错误报告 .