【Swift】AVSpeechSynthesizerをバックグランド再生する方法

Swift

こんちには、フリーのITエンジニアでWeb(PHP:Laravel)のバッグエンドをメインにフルリモートでお仕事させて頂きながら、個人開発でiOSアプリを作っているMoritaです。

個人の英語の勉強用に単語帳アプリを作成しています。
Swiftで文字読み上げを実行するのにAVSpeechSynthesizerを使用するかと思いますが、
普通に実装しただけではバックグラウンド再生はされません。
今回はバックグラウンドで再生する方法を紹介します。

今回はAVSpeechSynthesizerでの音声再生方法は省略しています。
実装自体は別の入門記事を参照ください。

検証環境

Xcode:11.4.1
端末:iPhone 7 Plus
iOS:13.4.1

Background Modesを有効にする

XcodeのTARGETSからSigning & Capabilities > + Capabilityボタンを押してBackground Modesを選択。

Modes:Audio, AirPlay, and Picture in Pictureにチェックを入れます。

コードの追加

UIViewControllerのviewWillAppear内に以下のコードを追記します。
これだけでアプリをバックグラウンドにしても、iPhoneにロックをかけても再生されます。すばらしいですね!

    override func viewWillAppear(_ animated: Bool) {
        try? AVAudioSession.sharedInstance().setCategory(AVAudioSession.Category.playback)
    }

まとめ

以前から実装方法を調べていましたが、以外に簡単にできるので驚きました。
これでアプリを常時起動しておかなくても勉強できそうです。

コメント

タイトルとURLをコピーしました