iOS开发使用AVAudioPlayer有关音频播放相关的处理

iOS开发使用AVAudioPlayer有关音频播放相关的处理_第1张图片

1、音频会话配置

iOS开发使用AVAudioPlayer有关音频播放相关的处理_第2张图片
配置音频会话

2、如果需要在锁屏/后台继续播放音频需要在info.plist配置

后台/Lock屏幕播放配置

3、主要难点:中断事件、线路改变的处理

 ①中断事件的处理:电话打入、闹铃响起、视频通话等

    我们发现不做任何处理情况下,音频会慢慢消失暂停。而我们一般想要的体验是这些事件结束后,音频可以继续播放,这就需要我们进行相应的处理。

    这时我们需要在中断来临前,得到会话中断的通知,AVAudioSession会发出AVAudioSessionInterruptionNotification通知,我们需要在播放器初始化的时候,

    注册相关的通知,通过协议使控制器在接受通知后,作相应的处理,中断开始我们需要暂停音频播放,中断结束需要重新激活再次播放


中断事件注册通知


iOS开发使用AVAudioPlayer有关音频播放相关的处理_第3张图片
处理中断事件

②线路改变的处理:耳机的插入/拔出、断开麦克风等,会发生线路的变化

    当耳机插入正在播放的音频设备时,我们能够正常使用,当拔出耳机时 这时音频还在播放,我们如果正在听一些不可描述的XX时,这时还在播放 这不超级尴尬吗!哈哈

这个时候是不符合苹果的相关文档的,我们对这种情况需要做隐私处理,暂停播放相关音频,而这时AVAudioSession会发出AVAudioSessionRouteChangeNotification通知,我们需要在播放器初始化的时候,

注册相关的通知,通过协议使控制器在接受通知后,作相应暂停的处理,


线路改变注册通知


iOS开发使用AVAudioPlayer有关音频播放相关的处理_第4张图片
线路改变相关处理

③处理相关事件,更新UI需要回到主线程中


iOS开发使用AVAudioPlayer有关音频播放相关的处理_第5张图片
主线程更新UI

最后这里是相关的一个小demo:https://github.com/KboyHub/YKAudioLooper

你可能感兴趣的:(iOS开发使用AVAudioPlayer有关音频播放相关的处理)