バックグラウンドで実行する Xamarin.iOS アプリの登録
バックグラウンド特権に個別のタスクを登録することは、一部のアプリケーションでは機能しますが、GPSを使用してユーザーに道案内するような、重要で長時間実行されるタスクの実行を常に要求されるアプリケーションの場合はどうなりますか? このようなアプリケーションは、代わりに、バックグラウンドで必要な既知のアプリケーションとして登録する必要があります。
アプリを登録すると、バックグラウンドでタスクを実行するために必要な特別な特権をそのアプリケーションに付与する必要があることが iOS に通知されます。
アプリケーションの登録カテゴリ
登録済みアプリは、いくつかのカテゴリに分類できます。
- オーディオ - 音楽プレーヤーやオーディオ コンテンツを扱うその他のアプリケーションは、アプリがフォアグラウンドでなくなった場合でもオーディオの再生を続けるために登録される場合があります。 このカテゴリのアプリがバックグラウンドでオーディオの再生やダウンロード以外の操作を試みると、iOS によってアプリが終了されます。
- VoIP - ボイス オーバー IP 通話 (VoIP) アプリケーションは、オーディオ アプリケーションに付与されているのと同じ権限を取得して、バックグラウンドでオーディオを処理し続けます。 また、接続を維持するために、必要に応じて VoIP サービスに応答することもできます。
- 外部アクセサリと Bluetooth - Bluetooth デバイスやその他の外部ハードウェア アクセサリと通信する必要があるアプリケーション用に予約されており、これらのカテゴリに登録すると、アプリはハードウェアに接続された状態を維持できます。
- Newsstand - Newsstand アプリケーションは、バックグラウンドでコンテンツを同期し続けることができます。
- 位置情報 - GPS またはネットワークの位置情報データを利用するアプリケーションは、バックグラウンドで位置情報の更新を送受信できます。
- フェッチ (iOS 7 以降) - バックグラウンド フェッチ特権に登録されたアプリケーションは、一定間隔でプロバイダーに新しいコンテンツがあるかどうかを確認し、ユーザーがアプリケーションに戻ったときに更新されたコンテンツを表示できます。
- リモート通知 (iOS 7 以降) - アプリケーションは、プロバイダーからの通知を受信するために登録し、その通知を使用して、ユーザーがアプリケーションを開く前に更新を開始できます。 通知はプッシュ通知の形式で受信することも、アプリケーションをサイレントに起動することも選択できます。
アプリケーションを登録するには、アプリケーションの Info.plist で Required Background Modes プロパティを設定します。 アプリケーションは、必要な数のカテゴリに登録できます。
バックグラウンドで位置情報を更新するためのアプリケーションの登録についてのステップ バイ ステップ ガイドについては、バックグラウンドでの位置情報のチュートリアルを参照してください。
Application Does Not Run in Background プロパティ
Info.plist で設定できるもう 1 つのプロパティは、Application does not run in background (UIApplicationExitsOnSuspend
) プロパティです。
これは、iOS 7 以降で App のバックグラウンド更新設定をオフに設定するのとまったく同じ効果がありますが、開発者側でのみ変更でき、iOS 4 以降で利用できる点が異なります。 アプリケーションは、バックグラウンドに入った直後に中断され、処理を行うことができなくなります。
アプリケーションがバックグラウンド処理を行うように設計されていない場合、このプロパティを使用すると、予期しない動作を回避するのに役立ちます。
バックグラウンド フェッチとリモート通知
バックグラウンド フェッチとリモート通知は、iOS 7 で導入された特別な登録カテゴリです。 これらのカテゴリを使用すると、アプリケーションはプロバイダーから新しいコンテンツを受信し、バックグラウンドで更新できます。 次のセクションでは、フェッチとリモート通知について詳しく説明します。また、iOS 6 でバックグラウンドでアプリケーションを更新するための手段としての位置認識についても説明します。