如果这是在苹果文档中,那么我就无法找到它 - 希望有人可以提供帮助:
我的应用程序偶尔播放短音频片段 - 我希望音频能够与背景中的其他应用程序(如iPod应用程序)播放音频 - 但我还希望它能够在应用程序运行时继续播放这些音频片段背景
我已在info.plist中的所需背景模式设置中设置了“应用播放音频”(该应用也使用了位置服务,因此也设置在那里)
我的应用程序在applicationDidFinishLaunching上设置音频会话:
AudioSessionInitialize (NULL,NULL,NULL,NULL);
UInt32 sessionCategory = kAudioSessionCategory_AmbientSound;
AudioSessionSetProperty (kAudioSessionProperty_AudioCategory,sizeof (sessionCategory),&sessionCategory);
AudioSessionSetActive(true);
在我的viewWillAppear:活动视图中的方法我有:
[super viewWillAppear:animated];
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
[self becomeFirstResponder];
以及viewWillDisappear中相应的事件处理程序和endReceivingRemoteControlEvents代码:如iOS 4: Remote controls for background audio
中所述最后我有一个AVAudioPlayer,以正常方式设置,在某些事件中播放声音
bool successful = [avAudioPlayer play];
if(!successful)
NSLog(@"did not play");
当应用程序处于前台时,应用程序正常工作并播放音频 - 但当应用程序进入后台并且应用程序尝试播放声音时,[avAudioPlayer播放]的返回值为NO且声音无法播放 - 当切换回前景时,音频再次开始工作。
如果我在设置会话时改为使用
UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback;
然后音频在前景和背景中完美播放。但是MediaPlayback并不是这个应用程序的正确模式,因为我偶尔只会播放音频剪辑 - AmbientSound实际上是我应该使用的模式。
我错过了什么?是不是可以使用kAudioSessionCategory_AmbientSound在后台播放音频?如果是这样的话,我在文档中没有找到任何相关内容。
答案 0 :(得分:3)
最终必须提交技术支持请求。
根据Apple背景播放不支持AmbientSound类别 - 您必须使用MediaPlayback。
他们声称这是在文档中 - 我再看一遍,我找不到它。
好的,所以使用kAudioSessionProperty_OverrideCategoryMixWithOthers很容易将背景声音混合到MediaPlayback中 - 但我现在必须跳过其他一些环节来复制其他AmbientSound功能(服从静音开关而不是在锁定时播放)。我真的不明白为什么AmbientSound不支持在后台播放 - 但我们去了。