后台音频播放器同步控制中心
在本教程中,您将创建一个能够在后台模式下播放音频并与Control Center中的音乐控件同步的播放器。
特征:
- 播放声音文件。
- 使声音在后台模式下继续播放。
- 从控制中心控制音频。
- 处理完成。
- 处理中断。
- 处理路线更改。
如果您遇到任何问题,可以在这里下载完整的源代码项目,然后再使用每个功能。
1.播放声音文件
要播放声音文件,您需要初始化播放器。 阅读以下文章以了解有关AVAudioPlayer的信息:
AVAudioPlayer
音频播放器,可播放文件或内存中的音频数据。
将以下块代码添加到视图控制器中以初始化播放器:
您还需要准备一个mp3文件进行测试。 要播放mp3文件,请按如下所示调用play()
方法:
player.play()
现在,您可以从导入的文件中听到声音。 但是,当您按“主页”按钮将应用程序移至背景模式时,声音已被静音。 因此,我们需要让它在下一指南中继续在后台模式下播放。
2.使声音在后台模式下继续播放
要使声音在后台模式下继续播放,您需要阅读以下文章:
AVAudioSession
与系统通信的中介对象,您打算如何在应用程序中使用音频。
启用背景音频
配置您的应用,使其在进入后台时继续播放音频。
如下替换AppDelegate.swift文件的application(_:didFinishLaunchingWithOptions:)
方法以配置音频会话:
现在运行该应用程序,播放声音,然后按“主页”按钮将应用程序移至背景模式,并检查声音是否仍继续播放。
3.从控制中心控制音频
阅读以下文章,了解如何从“控制中心”和“ iOS锁定”屏幕控制背景音频:
控制背景音频
支持从控制中心和iOS锁定屏幕控制背景音频。
将以下方法添加到视图控制器中,并从viewDidLoad()
方法调用setupRemoteTransportControls()
, setupNowPlaying()
viewDidLoad()
方法:
现在运行该应用程序,打开“控制中心”并进行检查。
4.处理完比赛
音频播放器播放完毕后,您需要更新nowPlayingInfo
和UI。 要接收此事件,您需要实现AVAudioPlayerDelegate协议的audioPlayerDidFinishPlaying(_:successfully :)方法,并如下更新setUpPlayer()
方法:
运行该应用程序并进行检查。
5.处理中断
在后台模式下播放时,如果打来电话,则声音会静音,但在挂断电话时,声音不会自动继续播放。 因此,我们需要阅读以下文章来处理这些中断事件:
响应音频会话中断
直接观察音频会话通知,以确保您的应用响应中断。
在中断结束时添加以下代码片段以自动播放:
现在运行该应用程序并进行测试。
6.处理路线变更
现在,当您将耳机插入手机时,声音将在耳机上发出。 但是当您拔下耳机插头时,声音会自动继续在内置扬声器上播放。 也许这是您不期望的行为。 B / c,当您插入耳机时,您想要声音对您而言是私密的,而当您拔下耳机时,您不希望它散发给其他人。 当路线改变时,我们将通过接收事件来处理它。
首先,您需要阅读本文以了解路由更改:
响应音频会话路由更改
直接观察音频会话通知,以确保您的应用响应中断。
更新setupNotifications()
方法并添加handleRouteChange(: Notification)
方法,如下所示:
运行该应用程序并进行测试。
就这些。 您可以在此处下载完整的源代码项目