[iPhone] Background バックグランド処理

バックグラウンドはできるだけ避けるべきというのがAppleのスタンスでしょうか 。ただ、バックグラウンドでもオーディオや位置情報を使うことはできるようです。


Swift 5.1
Xcode 11.3.1

Background Modes

バックグラウンド実行 — Apple Developer

には、audioや位置情報、通知などはバックグラウンドでも動作することが必要なので説明も多いようです。

audioは継続的にバックグラウンドで動作させたいので実際に使って見ます。

Background Modesの設定

「TARGET」->「Signing & Capabilities」から「+Capabilities」をクリックするとダイアログが表示されるので「Background Modes」を選択します。

 

 

 

Background Modesが追加されるので、「Audio, AirPlay …」にチェックします。



Info.plist に background modes が追加されています。

AVAudioplayer

AVAudioplayerを使ってmp3を再生してみます。以下のままコードを記述しstoryboardを設定します。

MP3などのミュージック・ファイルを再生させるにはどうするのか? AVAudioplayer は色々と設定ができますが、まず簡単な音楽再生ア…

AppDelegateの設定

AVAudioSessonをAppDelegateに設定します。

AppDelegate.swift


バックグラウンドなので実機てテストします。実行するとバックグラウンドでも再生しているのがわかります。

オーディオを再生するとしながら、実際は別の処理をさせて音楽は無音にするということを考える方がいるとは思いますが、リジェクトされるかもしれません

2.5.4 マルチタスクAppには、VoIP、オーディオ再生、位置情報取得、タスクの完了、ローカル通知など、適切なバックグラウンドサービスのみを使用してください。バックグラウンドでの位置情報取得モードを使用する場合は、それによってバッテリー持続時間が大幅に減少する可能性があることを通知してください。

Reference: App Store Reviewガイドライン
通知もしろという御達しです。

 

Error:

というエラーがLogとして吐き出されているのですが、これはバグのようでiOS13.4で修正されるということらしいです。
Open Radar Community bug reports