1、音频会话配置
2、如果需要在锁屏/后台继续播放音频需要在info.plist配置
3、主要难点:中断事件、线路改变的处理
①中断事件的处理:电话打入、闹铃响起、视频通话等
我们发现不做任何处理情况下,音频会慢慢消失暂停。而我们一般想要的体验是这些事件结束后,音频可以继续播放,这就需要我们进行相应的处理。
这时我们需要在中断来临前,得到会话中断的通知,AVAudioSession会发出AVAudioSessionInterruptionNotification通知,我们需要在播放器初始化的时候,
注册相关的通知,通过协议使控制器在接受通知后,作相应的处理,中断开始我们需要暂停音频播放,中断结束需要重新激活再次播放
②线路改变的处理:耳机的插入/拔出、断开麦克风等,会发生线路的变化
当耳机插入正在播放的音频设备时,我们能够正常使用,当拔出耳机时 这时音频还在播放,我们如果正在听一些不可描述的XX时,这时还在播放 这不超级尴尬吗!哈哈
这个时候是不符合苹果的相关文档的,我们对这种情况需要做隐私处理,暂停播放相关音频,而这时AVAudioSession会发出AVAudioSessionRouteChangeNotification通知,我们需要在播放器初始化的时候,
注册相关的通知,通过协议使控制器在接受通知后,作相应暂停的处理,
③处理相关事件,更新UI需要回到主线程中
最后这里是相关的一个小demo:https://github.com/KboyHub/YKAudioLooper