[iOS][Swift]バックグラウンドに移行してもオーディオ再生を続ける

オーディオ再生中にバックグラウンドに移行しても再生を続けるには?

Targetsから
Capabilities > Background Modes をONにして、
Audio, AirPlay and Picture in Picture をチェックします
ss 2015-09-24 22.10.27
(この設定によって、Info.plistに”Required Background Modes”キーが書き加えられます)

この設定をした上で、ソースコード上でAVAudioSessionのカテゴリを設定します。
AVAudioSessionのカテゴリとは、消音スイッチが入っているときに音楽再生するか?や、録音可能か?などの設定を定めるものです。
AVAudioSessionプログラミングガイド(日本語・PDF)
バックグラウンド再生の場合には、 AVAudioSessionCategoryPlaybackにします。

        /// バックグラウンドでも再生できるカテゴリに設定する
        let session = AVAudioSession.sharedInstance()
        do {
            try session.setCategory(AVAudioSessionCategoryPlayback)
        } catch  {
            // エラー処理
            fatalError("カテゴリ設定失敗")
        }

        // sessionのアクティブ化
        do {
            try session.setActive(true)
        } catch {
            // audio session有効化失敗時の処理
            // (ここではエラーとして停止している)
            fatalError("session有効化失敗")
        }

これで、音楽再生中にバックグラウンドに移行しても再生は続きます。

ただ、これで音楽を流し続けることはできるのですが、イヤホンやコントロールセンターからの操作を受け付けません。
そういった操作(リモートコントロールイベント)を受け付ける手順はこちらの記事をごらんください。
[iOS][Swift]リモートコントロールイベントに対応する | nackpan Blog

参考

Technical Q&A QA1668: Playing media while in the background using AV Foundation on iOS

投稿者:

nackpan

nackpan

iOSアプリを作っています。 リピーティングに便利な「語学学習支援プレイヤー」つくりました。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください