后台音频播放器同步控制中心

在本教程中,您将创建一个能够在后台模式下播放音频并与Control Center中的音乐控件同步的播放器。

特征:

  1. 播放声音文件。
  2. 使声音在后台模式下继续播放。
  3. 从控制中心控制音频。
  4. 处理完成。
  5. 处理中断。
  6. 处理路线更改。

如果您遇到任何问题,可以在这里下载完整的源代码项目,然后再使用每个功能。

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)方法,如下所示:

运行该应用程序并进行测试。

就这些。 您可以在此处下载完整的源代码项目