AVAudioSession setActive中notifyOthersOnDeactivation选项的正确用法问询
关于音频会话的两个疑问解答
1. notifyOthersOnDeactivation在激活会话时使用的问题
这不是什么未公开的停用方式,反而应该是示例代码里的一个错误。苹果官方文档明确说明notifyOthersOnDeactivation选项仅在调用setActive(false)(停用音频会话)时生效,在激活会话(传true)时传入这个选项没有任何实际作用,属于无效参数。
2. 应用进入后台、终止前是否需要停用音频会话
分两种场景处理:
- 如果你的APP是需要在后台持续播放音频的类型(比如音乐、播客类),不需要停用音频会话,反而要提前配置好对应的音频会话类别(比如
.playback),并在Xcode中开启“音频、AirPlay和画中画”的后台模式权限。 - 如果你的APP仅在前台使用音频/语音识别,建议在进入后台或终止前调用
setActive(false)停用音频会话。原因有两点:一是后台状态下系统可能会回收音频资源,主动停用能避免和其他APP的音频冲突;二是语音识别功能默认无法在后台持续运行,停用会话也能减少不必要的资源消耗。
内容的提问来源于stack exchange,提问作者Rhythmus
相关产品推荐
相关产品推荐

