設定 Background Mode 在背景播放音樂

開發音樂播放的 App 時,我們時常需要讓音樂在背景也能繼續播放,這樣的功能是如何實現的呢 ? 只要調整 Background Mode & 設定 AVAudioSession 即可實現。

點選 Capability 新增背景播音樂的能力

從 Project navigator 點選專案檔,點選 TARGETS 下的 App 後,切換到 Signing & Capabilities 頁面,點選 + Capability。

選擇 Background Modes

Capabilities 視窗裡有很多有趣的功能,不過此刻我們只想加入 Background Modes。

Signing & Capabilities 頁面多了 Background Modes。

勾選 Background Modes 的 Audio, AirPlay, and Picture in Picture

App 在背景可以做很多事,比方偷偷追蹤使用者的位置,不過我們只想享受一個人孤單聽音樂的滋味,所以只要勾選 Audio, AirPlay, and Picture in Picture。

將 AVAudioSession 設為 playback

為了讓 App 能在背景繼續播放,在螢幕鎖定 & silent mode 都能繼續播放音樂陪著我們,我們必須在 AppDelegate import AVFoundation,然後修改 function application(_:didFinishLaunchingWithOptions:),在 App 一啟動時將 AVAudioSession 設為 playback 的類別。(ps: 記得要 import AVFoundation)

AppDelegate.swift

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
try? AVAudioSession.sharedInstance().setCategory(.playback)
return true
}

現在我們終於可以在背景播音樂了 ,比方利用以下連結介紹的 AVPlayerLooper 在背景重覆播放音樂。

--

--

彼得潘的 iOS App Neverland
彼得潘的 Swift iOS App 開發問題解答集

彼得潘的iOS App程式設計入門,文組生的iOS App程式設計入門講師,彼得潘的 Swift 程式設計入門,App程式設計入門作者,http://apppeterpan.strikingly.com