iOSのBackground Modes—定義、モードの種類と設定

著者: IT Sectr 公開日: 2026-03-27 読了時間: 9 分

Background Modesは、アプリがバックグラウンドに移行した後もコードの実行を続けることを許可する、iOSの宣言可能な権能のセットです。各モードは特定のタスクタイプに対応しています。オーディオ、ジオロケーション、VoIP、Bluetooth、fetch、processingです。Apple, 2026によると、Background Modesの不正な使用は、App Storeのレビューでアプリが却否されるよくある原因のひとつです。

ポイント

  • Background Modes—バックグラウンドでの正諏なコード実行のためのiOS権能のセット。
  • オーディオモード—コントロールセンターによる制御で、バックグラウンドで音楽・ポッドキャスト・オーディオブックを再生。
  • ジオロケーション—ナビゲーションやフィットネストラッカーのためのバックグラウンドでの位置追跡。
  • Bluetooth—バックグラウンドでのBLEデバイスとの連携。
  • Appleのレビュー—モードの不正な使用はApp Storeからのアプリ却否につながります。

iOSでのBackground Modesとは?

Background Modesは、バックグラウンドで特定の種類の操作を実行するアプリの用意を宣言する、Xcodeプロジェクトの権能です。バックグラウンドで任意のServiceを開始できるAndroidとは異なり、iOSではInfo.plistにモードを明確に宣言する必要があります。各モードには厳密な使用ルールがあり、Appleによってレビューされます。

Background Modesの仕組み

アプリがバックグラウンドに移行すると、iOSは3–5秒でアプリを一時停止します。アプリがBackground Modeを宣言し、対応するAPI(例:オーディオの場合はAVAudioSession)をアクティブに使用している場合、システムはアプリを特別な実行モードに置きます。アプリはメモリに残り、モード種類によって制限されたコードを実行できます。

利用可能なモードの全一覧

iOSは次のBackground Modesをサポートしています。Audio、Location、VoIP、Bluetooth LE(BLEアクセサリ)、Background Fetch(定期更新)、Background Processing(長時間作業)、External Accessory Communication、Push to Talk(PTT)、HealthKit。各モードには、アプリ説明での理由付けが必要です。

モードInfo.plistキー目的iOSバージョン
Audioaudioバックグラウンド音声、AirPlay4.0+
Locationlocation位置情報の追跡4.0+
VoIPvoipVoIPプッシュ通知4.0+
BLEbluetooth-centralBLEデバイスとの連携7.0+
Fetchfetch定期データダウンロード7.0+
Processingprocessing長時間バックグラウンド作業13.0+
Push to Talkpush-to-talkPTT音声16.0+

オーディオモード(Audio、AirPlay、Picture in Picture)

オーディオバックグラウンドモードは、音楽プレイヤー、ポッドキャストアプリ、オーディオサービスで使用される、最も一般的なモードです。アプリは音声再生を続け、コントロールセンターから制御でき、ロック画面に表示されます。有効化するには、.playbackカテゴリでAVAudioSessionを構成すれば十分です。

オーディオセッションの構成

バックグラウンドで音声を動作させるには、AVAudioSessionを構成して活性化する必要があります。.playbackカテゴリは、アプリが音声を再生中であり、バックグラウンドでアクティブにする必要があることをシステムに知らせます。この構成がないと、アプリを最小化してから5–10秒で音声が停止します。

swift
import AVFoundation

func configureAudioSession() {
    let session = AVAudioSession.sharedInstance()
    do {
        try session.setCategory(
            .playback,
            mode: .default,
            options: []
        )
        try session.setActive(true)
    } catch {
        print("オーディオセッションエラー: \(error)")
    }
}

コントロールセンターからの再生制御

コントロールセンターやロック画面と連携するには、MPRemoteCommandCenterを構成する必要があります。これにより、再生、一時停止、次のトラック、前のトラックのコマンドを扱うことができます。また、メタデータ(トラック名、アーティスト、アートワーク、再生進捗)を表示するためにMPNowPlayingInfoPropertyを更新する必要があります。

ビデオのPicture in Picture

iOS 14以降、オーディオバックグラウンドモードは、ビデオのPicture in Pictureもサポートしています。アプリを最小化したときに、浮かぶウィンドウでビデオを表示し続けることができます。有効化するには、AVPlayerLayerを使用したAVPictureInPictureControllerを使用します。このモードは、アプリがオーディオトラックを再生中の場合にのみ動作します。

ジオロケーション(位置情報の更新)

位置情報バックグラウンドモードにより、アプリはバックグラウンドで位置情報の更新を受け取ることができます。ナビゲーションアプリ、フィットネストラッカー、配達アプリ、ソーシャルネットワークで使用されています。このモードがない場合、アプリがバックグラウンドに移行する際に位置情報を一度しか受け取れず、その後更新が停止します。

位置情報追跡のタイプ

CLLocationManagerは、重大な変化位置情報、標準位置情報追跡、リージョンモニタリングなど、いくつかの追跡手法をサポートしています。最大の精度でバックグラウンド動作するには、allowsBackgroundLocationUpdates = truepausesLocationUpdatesAutomatically = falseを使用します。

エネルギー効率と精度

バックグラウンドでの継続的な位置情報追跡は、最もエネルギーを消費するシナリオのひとつです。iOSは自動的に移動速度に応じて更新頻度を調整します。歩行時は10–30秒ごと、運転時は1–5秒ごとです。ナビゲーションには、desiredAccuracy = kCLLocationAccuracyBestForNavigationを使用します。

swift
let locationManager = CLLocationManager()
locationManager.requestAlwaysAuthorization()
locationManager.allowsBackgroundLocationUpdates = true
locationManager.pausesLocationUpdatesAutomatically = false
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.activityType = .fitness
locationManager.startUpdatingLocation()

重大な変化位置情報

significant-change locationモードは、位置情報バックグラウンドモードなしで動作します。システムは、坐標が重大に変化した場合(通常500メートル以上)にのみアプリを起動します。定的なGPSが不要なため、バッテリーを節約できます。ユーザーが移動したときにデータを更新する天気アプリなどに適しています。

Bluetoothモード(LEアクセサリ)

Bluetooth LEバックグラウンドモードにより、アプリはバックグラウンドでBLEデバイスとインタラクションできます。フィットネスバンド、医療センサー、スマートホームデバイス、Beaconナビゲーションで使用されています。モードは二つのサブタイプに分けられます。bluetooth-central(アプリがデバイスに接続)とbluetooth-peripheral(アプリがデバイスとして動作)です。

Centralモードでの動作

Centralとして動作するアプリは、バックグラウンドでBLEデバイスをスキャンして接続できます。これには、Background Modesでbluetooth-centralを指定し、CBCentralManagerScanOptionAllowDuplicatesKeyオプションを付けてCBCentralManager.scanForPeripheralsを呼び出します。バックグラウンドでは、スキャン頻度が低下します。システムはエネルギー節約のために発見を延辟する場合があります。

Peripheralモードでの動作

Peripheralとして動作するアプリは、サービスを広告し、他のデバイスからの要求に応答できます。bluetooth-peripheralモードにより、アプリはバックグラウンドでも他のBLEデバイスに対して可視であることができます。HealthKitアプリやIoTソリューションで使用されています。

Beaconとリージョンモニタリング

iBeaconモニタリングは、追加の許可なくバックグラウンドで動作します。システム自体がBeaconリージョンへの入り出入りを追跡します。ただし、Beaconのコンテンツ(proximity UUID、major、minor)をスキャンするには、Bluetooth許可とbluetooth-central Background Modeが必要です。モニタリングには、CLBeaconRegionを使用したCLLocationManagerを使用します。

通信アプリ用VoIPとPushKit

VoIPバックグラウンドモードは、音声通信アプリ(Skype、Zoom、WhatsApp)用に設計されています。このモードにより、アプリは着信を受け付けるためにサーバーに接続したままにすることができます。iOS 8以降、VoIPにはAPNsを介さずにVoIPサーバーからのプッシュ通知を扱うフレームワークであるPushKitが使用されます。

着信用PushKit

PushKitは、デバイスへのVoIP通知の届けを保証する唯一の仕組みです。PushKit通知を受け取ると、システムはアプリが終了されていてもアプリを起動します。アプリは30秒以内にサーバーとの接続を確立し、着信についてのローカル通知を表示する必要があります。

swift
import PushKit

class VoIPHandler: NSObject, PKPushRegistryDelegate {
    func pushRegistry(
        _ registry: PKPushRegistry,
        didReceiveIncomingPushWith payload: PKPushPayload,
        for type: PKPushType,
        completion: @escaping () -> Void
    ) {
        let caller = payload.dictionaryPayload["caller"] as! String
        reportIncomingCall(from: caller)
        completion()
    }
}

PushKitの使用ルール

PushKitは一般的な通知には使用できません。VoIP、watchOSの通信、ファイルプロバイダーのみで使用できます。Appleはレビュー時にこれをチェックします。不正な使用はアプリ却否につながります。iOS 13以降、PushKitは通知を届けるだけです。CXProvider(CallKit)を呼んで通話画面を表示する必要があります。

FetchモードとProcessingモード

Background FetchBackground Processingは、バックグラウンドでのコンテンツ更新や長時間作業のためのモードです。Fetchは短期定期更新(30秒まで)、Processingは条件付き(Wi-Fi、チャージング)の長時間作業(10分まで)です。Processingは iOS 13+でのみ利用可能です。

Background Fetch—迅速更新

Fetchモードにより、システムは新しいコンテンツをダウンロードするために定期的にアプリを起動できます。システムはユーザーの行動を分析し、最適なタイミングを選択します。アプリは30秒以内にcompletion handlerを呼ぶ必要があります。Fetchは、ニュースアプリ、ソーシャルメディアフィード、天気アプリに適しています。

Background Processing—長時間作業

BGProcessingTaskは、ユーザーの操作なしで実行できる作業(キャッシュのクリーンアップ、大規模データベースのシンクロナイゼーション、メディアファイルの処理)のために設計されています。システムは、デバイスがチャージング中でWi-Fiに接続され、ローパワーモードではない場合にのみ作業を開始します。最大10分間利用可能です。

スケジューリングと件件

BGProcessingTaskでは、requiresExternalPowerとrequiresNetworkConnectivityを指定する必要があります。条件を満たさない場合、システムは実行を無限期延期することがあります。少なくとも毎日一回実行される必要があるBGAppRefreshTaskとは異なり、Processingはデバイスがほとんどチャージされない場合、数週間実行されないことがあります。

Background Modesに関するApp Storeレビューガイドライン

Appleは、アプリレビュー中にBackground Modesの使用を厳密にチェックします。基本ルールは、各有効なモードはアプリの機能性によって理由付けられなければなりません。アプリがLocation Modeを宣言しているにもかかわらず、ジオロケーションを使用しない場合、権能を削除するように要求されて却否されます。

却否の一般的な理由

最もよくある違反は次のとおりです。Location Modeを明確な必要性なく使用(広告表示のために“常に”アクセスを要求)、バックグラウンド音声再生のないAudio Mode、PushKitのないVoIP、BluetoothデバイスのないBLE Mode。モードがもはや使用されていない場合、Appleはアップデート段階でもアプリを却否することがあります。

レビューノートでの説明

レビューに提出する際は、ノートで各モードの具体的な理由を記述してください。例えば、“Location Background Modeは、フィットネス機能でユーザーのルートを追跡するために使用されます”。説明がなければ、レビュアーはアプリを却否する可能性があります。機密性の高い機能(VoIP)の場合、Appleがテストアカウントを要求することがあります。

モードを最小化するための推奨

必要最小限のモードセットを使用してください。アプリが毎時に一回バックグラウンドデータダウンロードを必要とする場合、Location Modeを有効にせずに、FetchまたはBGAppRefreshTaskを使用してください。余計なモードは却否だけでなく、ユーザーが設定でアプリがバックグラウンドでジオロケーションを使用しているのを見るため、悪い印象も与えます。

よくある質問

一つのアプリで何個のBackground Modesを有効にできますか?

数に制限はありませんが、各モードはアプリの機能性によって理由付けられる必要があります。必要なく全てのモードを有効にすると、レビュー中に却否される可能性が高いです。実際的には、アプリあたり2–3つのモードが一般的です。これを超えると、ユーザーが多くの許可リクエストを確認することになります。

Background Modeがアクティブになっているか確認するにはどうすればいいですか?

UIApplication.shared.applicationStateを使用します。アプリがバックグラウンドにあるかどうか(state == .background)を確認できます。また、UIApplication.didEnterBackgroundNotificationやwillEnterForegroundNotificationの通知を監視して、行動を切り替えることもできます。

AudioモードとAirPlay Backgroundモードの違いは何ですか?

Audioは、スピーカーやヘッドホンからの音声再生です。AirPlayは、Apple TVや他のAirPlayデバイスへのオーディオ・ビデオストリーミングです。実際には、AirPlayがオーディオセッションを使用するため、Audio Modeで両方のシナリオをカバーできます。iOS 7+では、独立したAirPlayモードは必要ありません。

アプリが開いているときだけ、バックグラウンド位置情報を使用できますか?

はい、requestAlwaysAuthorizationの代わりにrequestWhenInUseAuthorization()を使用します。アプリはフォアグラウンドでのみ位置情報を受け取ります。バックグラウンドで短時間の追跡が必要な場合は、startUpdatingLocation()を呼び、willResignActiveで停止します。

Background Modesはバッテリーにどのような影響を与えますか?

各モードは消費電力を増やします。Location Modeが最も電力を消費し、綜続的な追跡でバッテリーが30–50%減少する可能性があります。Audio Modeは中程度(15–20%)です。FetchとProcessingは最小限(2–5%)です。BLE ModeはBluetooth LEのエネルギー効率により低く(5–10%)です。

まとめ

  • Background Modes—アプリがバックグラウンドで正諏にコードを実行できるようにする、iOSの宣言可能な権能。
  • Audio Mode—最も一般的、.playbackカテゴリのAVAudioSessionを使用して音楽・ポッドキャスト・ビデオを再生。
  • Location Mode—ナビゲーションやフィットネス用、最も電力を消費し、requestAlwaysAuthorizationとallowsBackgroundLocationUpdatesが必要。
  • BLE Mode—バックグラウンドスキャンを使用したCBCentralManagerを通じて、バックグラウンドでBluetoothデバイスと連携。
  • VoIPとPushKit—通信アプリ用、PKPushRegistryを通じて着信の届けを保証。
  • FetchとProcessing—異なる実行条件と時間制限を持つ短期および長期のバックグラウンド作業。
  • Appleは各モードの理由付けを厳密にチェックし、不正な使用はApp Storeからのアプリ却否につながります。

ターンキー方式のモバイルアプリケーションを開発します

IT Sectrは2017年からスタートアップや企業向けにiOS・Androidアプリケーションを開発しています。私たちがご相談に乗り、最適なソリューションをご提案します。

プロジェクトについて相談

こちらもお読みください