小编Set*_*and的帖子

远程控制事件导致iOS终止后台应用程序

我的应用程序使用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
)}
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

有没有人对此有所了解?

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

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

  1. 暂停应用程序的音频,然后将其发送到后台(点击主页按钮或切换到另一个应用程序)或暂停应用程序的音频,同时它在后台
  2. 导致应用程序遇到低内存警告(模拟或真实)
  3. 10分钟后,尝试使用从蓝牙设备或扬声器底座等设备触发的遥控事件播放音频.

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

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

iphone bluetooth multitasking ios4 ios

18
推荐指数
0
解决办法
1554
查看次数

播放结束后,将音量控制返回到iOS设备振铃器

我有一个音频应用程序,它使用媒体播放音频会话类别来允许背景音频.初始化音频会话后,iOS设备上的硬件音量按钮将控制音频会话的音量.

一旦音频播放停止,我想将手机振铃器的控制权返回到硬件音量按钮,但我尝试通过停用音频会话来做到这一点并不成功.

以下是我初始化和激活音频会话的方法:

AudioSessionInitialize(NULL, NULL, interruptionListenerCallback, self);

AudioSessionAddPropertyListener(kAudioSessionProperty_AudioRouteChange, 
                                audioRouteChangeListenerCallback, 
                                self);
UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback;

AudioSessionSetProperty(kAudioSessionProperty_AudioCategory,
                        sizeof(sessionCategory),           
                        &sessionCategory);
Run Code Online (Sandbox Code Playgroud)

以下是我尝试停用音频会话并将iOS设备的振铃控制权返回到硬件音量控件的方法:

AudioSessionSetActive(false);
Run Code Online (Sandbox Code Playgroud)

我知道至少有一个应用程序就是这样(Audible.com的iOS应用程序).有谁知道我可能做错了什么?

hardware volume audiosession ios avplayer

7
推荐指数
1
解决办法
1414
查看次数