バックグラウンド タスクでシステム イベントに応答する方法 (HTML)
[ この記事は、Windows ランタイム アプリを作成する Windows 8.x および Windows Phone 8.x 開発者を対象としています。Windows 10 向けの開発を行っている場合は、「最新のドキュメント」をご覧ください]
システム イベント トリガーに応答するバックグラウンド タスクを作る方法について学習します。 Windows ストア アプリでは、アプリがフォアグラウンドにない場合でも、軽量のカスタム コードと SystemTrigger イベントを関連付けることにより、ユーザー エクスペリエンスを保持します。カスタム コードは、バックグラウンド タスクで実行されます。
理解しておく必要があること
テクノロジ
必要条件
- このトピックは、既にアプリにバックグラウンド タスク クラスが作られており、システムがトリガーするイベント (インターネットが利用できるようになる、ユーザーがログインするなど) に応じてこのタスクを実行する必要があることを前提としています。SystemTrigger クラスや MaintenanceTrigger クラスを使って登録されたバックグラウンド タスクを実行するためには、アプリがロック画面上にあることが必要です。ここでは、主に SystemTrigger クラスについて扱います。バックグラウンド タスク クラスの作成に関する詳しい情報については、「クイック スタート: バックグラウンド タスクの作成と登録」をご覧ください。
手順
ステップ 1: SystemTrigger オブジェクトを作る
アプリ コードで新規の SystemTrigger オブジェクトを作ります。 1 つ目のパラメーター triggerType には、このバックグラウンド タスクをアクティブ化するシステム イベント トリガーの種類を指定します。イベントの種類の一覧については、「SystemTriggerType」をご覧ください。
2 つ目のパラメーター OneShot では、次回システム イベントが発生してバックグラウンド タスクをトリガーしたときに一度だけバックグラウンド タスクを実行するか、それともタスクの登録が解除されるまで、システム イベントが発生するたびにバックグラウンド タスクを実行するかを指定します。
次のコードでは、インターネットが利用可能になるたびにバックグラウンド タスクを実行するように指定しています。
var internetTrigger = new Windows.ApplicationModel.Background.SystemTrigger(InternetAvailable, false);
ステップ 2: (省略可能) 条件の追加
いつタスクを実行するかを制御するバックグラウンド タスクの条件を必要に応じて追加します。条件を指定すると、条件が満たされるまではバックグラウンド タスクが実行されないようにすることができます。詳しくは「バックグラウンド タスクを実行するための条件を設定する方法」をご覧ください。
この例では、ユーザーが積極的にデバイスを利用している (ユーザーが存在する) 場合にのみバックグラウンド タスクが実行されるように、条件を UserPresent に設定しています。指定できるバックグラウンド タスク条件の一覧については、「SystemConditionType」をご覧ください。
次のコードでは、バックグラウンド タスクに条件を追加しています。
var exampleCondition = new Windows.ApplicationModel.Background.SystemCondition(Windows.ApplicationModel.Background.SystemCondition.UserPresent);
ステップ 3: バックグラウンド タスクの登録
バックグラウンド タスクの登録関数を呼び出してバックグラウンド タスクを登録します。バックグラウンド タスクの登録について詳しくは、「バックグラウンド タスクを登録する方法」をご覧ください。
次のコードでは、バックグラウンド タスクを登録しています。
var entryPoint = “js\\ExampleBackgroundTask.js”;
var taskName = “Internet-based background task”;
var task = RegisterBackgroundTask(entryPoint, taskName, internetTrigger, exampleCondition);
注
Windows Phone ストア アプリでは、バックグラウンド タスクの登録を試みる前に RequestAccessAsync を呼び出す必要があります。Windows では、実行するにはアプリをロック画面に配置する必要があるバックグラウンド タスク セットにのみこの呼び出しが必要ですが、Phone ではどのバックグラウンド タスクを登録する場合でも、その前に一度このメソッドを呼び出す必要があります。
更新のリリース後に Windows Phone アプリが引き続き適切に実行されるようにするには、更新された後にアプリを起動するときに RemoveAccess、RequestAccessAsync の順に呼び出す必要があります。詳しくは、「バックグラウンド タスクのガイドライン (HTML)」をご覧ください。
注
Windows 8.1 以降では、バックグラウンド タスクの登録パラメーターが登録時に検証されます。いずれかの登録パラメーターが有効でない場合は、エラーが返されます。アプリは、バックグラウンド タスクの登録が失敗するシナリオを処理できる必要があります。たとえば、条件ステートメントを使って登録エラーを確認し、失敗した登録は別のパラメーター値を使ってやり直してみます。
注釈
バックグラウンド タスクの登録動作を確認するには、バックグラウンド タスクのサンプルをダウンロードしてください。
バックグラウンド タスクは、ロック画面上にない場合でも SystemTrigger イベントと MaintenanceTrigger イベントに応答して実行できます。ただし、その場合もアプリケーション マニフェストでバックグラウンド タスクを宣言する必要があります。電話では、どのバックグラウンド タスクの種類を登録する場合でも、その前に RequestAccessAsync も呼び出す必要があります。
ロック画面対応アプリでは、TimeTrigger、PushNotificationTrigger、NetworkOperatorNotificationTrigger の各イベントに応答するバックグラウンド タスクを登録することにより、アプリがフォアグラウンドにない場合でも、ユーザーとリアルタイムに通信することができるようになります。詳しくは、「バックグラウンド タスクによるアプリのサポート」をご覧ください。