我有一个iOS应用程序,在某些地方有一些音频反馈,但我希望用户在后台播放的任何其他音乐可以播放 . 此外,我希望我的应用程序中的音频尊重静音开关 . 根据开发人员文档,此功能应该由AVAudioSession环境类别启用 . 这是我正在使用的代码:
if (!hasInitialisedAudioSession) {
AVAudioSession *session = [AVAudioSession sharedInstance];
[session setCategory:AVAudioSessionCategoryAmbient error:NULL];
[session setActive:YES error:NULL];
hasInitialisedAudioSession = YES;
}
代码执行得很好,它确实让应用程序听起来在iPod音乐上播放 . 然而,它不做的是尊重静音开关 . 我已经尝试将此代码换成类似的C音频调用(类似于AudioSessionSetProperty),而不是Objective-C调用,但我得到了相同的结果 - 环境会话类别根本不想尊重静音开关,尽管如此文档说应该这样做 .
有任何想法吗?谢谢您的帮助 :)
1 回答
我想我设法解决了 - 事实证明它与我的应用程序完全无关,而是与iPod应用程序无关 . 当iPod没有播放时,我的应用程序遵循静音开关,然后允许iPod播放它 - 我想要的所有行为 . 但是,当iPod播放时,应用程序停止响应静音开关,所以我认为这只是iPod对设备音频设置的影响 . 如果我真的想花时间在它上面,我可能会解决这个问题,但只要它在iPod不能播放时就服从静音开关对我来说就足够了 .
编辑:要解决此问题,只需使用此功能来确定静音开关是否手动打开,如果结果为是,则不播放声音 . 但是,如果您没有中央音频管理员课程,可能会有点痛苦 . 如果Apple可以在他们的文档中发布这种行为,那就太好了 .