Unity×iOS

【Unity×iOS】バックグラウンドでも音を止めない!オーディオ再生を継続する設定方法まとめ(コピペOK)

使用環境

・Unity Editor:2021.3.18f1

この記事で分かること

  • なぜUnityアプリはバックグラウンドで音が止まるのか
  • Unity Player Settingsでやるべき設定
  • Info.plistへの権限追加(Audio background mode)
  • 必要に応じたiOSネイティブAudioSession設定
  • 審査時に気をつける注意点まとめ

iOSのバックグラウンドオーディオ再生の許可とは?

ピッグダディ

今日は「Unityアプリで、iOSのバックグラウンド中も音を鳴らし続ける方法」を解説するよ。
音楽アプリや癒し系アプリを作っている人には特に大事な内容だね。

ピッグボーイ

え、でも普通にAudioSource使ってたらバックグラウンドにしたら止まっちゃいましたよ?

ピッグガール

たしかに。設定とか権限が足りないってことなんですか?

ピッグダディ

その通り!
Unityの設定に加えて、iOS側のInfo.plistやAudioSessionの調整が必要なんだ。
この記事では、その手順を「コピペで使える」形で丁寧に紹介していくね。

なぜUnityアプリはバックグラウンドで音が止まるのか?

iOSは、バッテリーとセキュリティの観点から、原則バックグラウンドアプリの動作を制限しています。
特に音声再生に関しては、

  • Info.plistにバックグラウンド再生許可がない
  • AudioSessionカテゴリが適切でない 場合、アプリがホームに移った瞬間にオーディオ出力が強制停止されます。

Unity側は特別にiOS向けのAudioSession設定をしないため、
デフォルトではバックグラウンド再生ができない状態になっています。

必須手順①:Unity Player Settingsの設定

まずUnityエディタ側で、次の設定を行います。

Mute Other Audio Sourcesがオンだと、他のオーディオアプリ(Spotifyなど)を停止させる動作になるため、Unity自身のバックグラウンド再生にも悪影響を与えます。

  1. Edit → Project Settings → Playerを開く
  2. Other Settings → Configurationセクションへ移動
  3. 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 SettingsMute Other Audio Sources = OFF
Info.plistUIBackgroundModes → audio 追加
ネイティブプラグイン(必要時)AVAudioSessionCategoryPlayback設定

これで、Unityアプリがバックグラウンドでも音を鳴らし続けられるようになります!

注意点

  • バックグラウンド再生を許可した場合、App Store審査で理由を聞かれる場合があります
     → 審査回答例:「リラクゼーションサウンドの再生」「ポッドキャスト再生機能」など正直に説明すれば問題なし
  • バックグラウンド再生中はバッテリー消費が若干増加します
     → そのため、不要な時は明示的に停止する設計がベストです

まとめ

ポイント内容
Unity標準設定+Info.plist修正でバックグラウンド再生が可能
必要に応じてAudioSession設定もカスタマイズ
審査対策には正当な理由を用意しておく

Unity×iOSプロジェクトで快適なオーディオ体験を実現するために、
ぜひこの記事の手順を取り入れてみてください!