iOSでは、アプリがバックグラウンド(ホーム画面に戻った状態)になると、通常は音声再生も停止します。
Unity製アプリでも同様に、特別な設定をしないと音が止まってしまうため、
音楽アプリ・リラクゼーションアプリ・サウンド付きツールを開発する場合は注意が必要です。
この記事では、Unity×iOS環境でバックグラウンドでもオーディオを再生し続ける方法を、コピペOKの手順付きで解説します!
この記事で分かること
- なぜUnityアプリはバックグラウンドで音が止まるのか
- Unity Player Settingsでやるべき設定
- Info.plistへの権限追加(Audio background mode)
- 必要に応じたiOSネイティブAudioSession設定
- 審査時に気をつける注意点まとめ
なぜUnityアプリはバックグラウンドで音が止まるのか?
iOSは、バッテリーとセキュリティの観点から、原則バックグラウンドアプリの動作を制限しています。
特に音声再生に関しては、
- Info.plistにバックグラウンド再生許可がない
- AudioSessionカテゴリが適切でない 場合、アプリがホームに移った瞬間にオーディオ出力が強制停止されます。
Unity側は特別にiOS向けのAudioSession設定をしないため、
デフォルトではバックグラウンド再生ができない状態になっています。
必須手順①:Unity Player Settingsの設定
まずUnityエディタ側で、次の設定を行います。
手順
Mute Other Audio Sourcesがオンだと、他のオーディオアプリ(Spotifyなど)を停止させる動作になるため、Unity自身のバックグラウンド再生にも悪影響を与えます。
- Edit → Project Settings → Playerを開く
- Other Settings → Configurationセクションへ移動
- Mute Other Audio Sources を オフ にする
これで、Unity側の基本設定はOK!
必須手順②:Info.plistへの権限追加
iOSでは、アプリがバックグラウンドでも音声を出すには事前宣言が必要です。
これを設定しないと、バックグラウンド再生できないだけでなく、App Store審査にも通りません。
手順
Xcodeにビルド後、Info.plistを開き、以下を追加します。
<key>UIBackgroundModes</key>
<array>
<string>audio</string>
</array>
- UIBackgroundModes配列にaudioを指定
- これにより、バックグラウンド時のオーディオ再生を許可できます
補足:UnityからPostProcessBuildで自動付加するスクリプトを書くこともできますが、最初は手動でOK!
必須手順③:iOSネイティブAudioSession設定(場合による)
一部の特殊なアプリ(例えば、外部音楽とUnity音をミックスしたい場合)では、
さらにAudioSessionの設定をカスタマイズする必要があります。
Objective-C++プラグイン例(必要に応じて)
C#側から呼び出すことで、
- AVAudioSessionCategoryPlayback
を明示的に設定し、バックグラウンド再生を安定させることができます。
必要ない場合(通常のUnityサウンドのみなら)この手順はスキップしても大丈夫です。
#import <AVFoundation/AVFoundation.h>
extern "C" void SetAudioSessionForBackground()
{
NSError *error = nil;
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback
error:&error];
[[AVAudioSession sharedInstance] setActive:YES error:&error];
}
【コピペOK】必要な設定まとめ
項目 | 設定内容 |
---|---|
Unity Player Settings | Mute Other Audio Sources = OFF |
Info.plist | UIBackgroundModes → audio 追加 |
ネイティブプラグイン(必要時) | AVAudioSessionCategoryPlayback設定 |
これで、Unityアプリがバックグラウンドでも音を鳴らし続けられるようになります!
注意点まとめ(審査・バッテリー)
- バックグラウンド再生を許可した場合、App Store審査で理由を聞かれる場合があります
→ 審査回答例:「リラクゼーションサウンドの再生」「ポッドキャスト再生機能」など正直に説明すれば問題なし - バックグラウンド再生中はバッテリー消費が若干増加します
→ そのため、不要な時は明示的に停止する設計がベストです
まとめ
ポイント | 内容 |
---|---|
Unity標準設定+Info.plist修正でバックグラウンド再生が可能 | |
必要に応じてAudioSession設定もカスタマイズ | |
審査対策には正当な理由を用意しておく |
Unity×iOSプロジェクトで快適なオーディオ体験を実現するために、
ぜひこの記事の手順を取り入れてみてください!