ServicingComplete トリガーの使用方法 (HTML)
[ この記事は、Windows ランタイム アプリを作成する Windows 8.x および Windows Phone 8.x 開発者を対象としています。Windows 10 向けの開発を行っている場合は、「最新のドキュメント」をご覧ください]
ここでは、アプリの更新後、ServicingComplete SystemTrigger を使ってバックグラウンド タスク登録を制御する方法について説明します。
理解しておく必要があること
テクノロジ
必要条件
- このトピックは、1 つ以上のバックグラウンド タスクを実行するすべてのアプリに適用されます。バックグラウンド タスク クラスの作成に関する詳しい情報については、「クイック スタート: バックグラウンド タスクの作成と登録」をご覧ください。
手順
ステップ 1: ServicingComplete バックグラウンド タスクの作成
バックグラウンド タスク登録は、複数のアプリ更新にわたって継続します。アプリが更新されるとき、アプリの登録は有効なままとなり、トリガーされます。アプリの更新時に通知されるように、ServicingComplete トリガーにバックグラウンド タスクを登録できます。有効でなくなったバックグラウンド タスクは、登録を解除できます。
バックグラウンド タスクのために新しい JavaScript ファイルを作成します。
次のサンプル コードは、バックグラウンド タスクの基本的な開始点を示しています。
// // ServicingCompleteTask.js // (function () { "use strict"; // // This function does the work of the ServicingComplete background task. // function doWork() { // // A JavaScript background task must call close when it is done. // close(); } doWork(); })();
登録を解除する必要があるバックグラウンド タスクの登録オブジェクトを見つけます。Unregister を呼び出してタスクの登録を解除します。インスタンスがアクティブな場合には、バックグラウンド タスクの実行を停止する方法として、cancelTask パラメーターを true に設定することもできます。
// // ServicingCompleteTask.js // (function () { "use strict"; // // This function does the work of the ServicingComplete background task. // function doWork() { // // Unregister tasks that no longer exist. // var unregisterTask = "BadTaskName"; var unregTask = FindTask(unregisterTask); if (unregTask != null) { unregTask.Unregister(true); } // // A JavaScript background task must call close when it is done. // close(); } // // Check for a registration of the named background task. If one exists, // return it. // function FindTask(taskName) { var taskRegistered = false; var background = Windows.ApplicationModel.Background; var iter = background.BackgroundTaskRegistration.allTasks.first(); var hascur = iter.hasCurrent; while (hascur) { var cur = iter.current.value; if (cur.name === taskName) { return cur; } hascur = iter.moveNext(); } } doWork(); })();
必要に応じ、代替タスクを登録します。「バックグラウンド タスクを登録する方法」で示されているようなバックグラウンド タスクの登録関数を使って、作業を簡略化してください。
// // ServicingCompleteTask.js // (function () { "use strict"; // // This function does the work of the ServicingComplete background task. // function doWork() { // // Unregister tasks that no longer exist. // var unregisterTask = "BadTaskName"; var unregTask = FindTask(unregisterTask); if (unregTask != null) { unregTask.Unregister(true); } // // Register new/replacement tasks. // var newTaskName = "New Background Task"; var newTaskEntryPoint = "js\\NewBackgroundTask.js"; var background = Windows.ApplicationModel.Background; var internetTrigger = new background.SystemTrigger( background.SystemTriggerType.internetAvailable, false); var newTask = RegisterBackgroundTask(newTaskEntryPoint, newTaskName, internetTrigger, null); // // A JavaScript background task must call close when it is done. // close(); } // // Check for a registration of the named background task. If one exists, // return it. // function FindTask(taskName) { var taskRegistered = false; var background = Windows.ApplicationModel.Background; var iter = background.BackgroundTaskRegistration.allTasks.first(); var hascur = iter.hasCurrent; while (hascur) { var cur = iter.current.value; if (cur.name === taskName) { return cur; } hascur = iter.moveNext(); } } doWork(); })();
ステップ 2: ServicingComplete バックグラウンド タスクの登録
ServicingComplete バックグラウンド タスクは、他のバックグラウンド タスクと一緒に登録する必要があります。これは、アプリが更新される時点でトリガーされるようにするためです。ServicingComplete バックグラウンド タスクのエントリ ポイントは、アプリの更新プログラムでも同じでなければなりません。
新しい SystemTrigger オブジェクトを作ります。
最初のパラメーター triggerType は servicingComplete に設定する必要があります。
2 つ目のパラメーター OneShot は false に設定する必要があります。
このコード例では、ServicingComplete トリガーを作っています。
var background = Windows.ApplicationModel.Background; var servicingCompleteTrigger = new background.SystemTrigger( background.SystemTriggerType.servicingComplete, false);
注 ServicingComplete バックグラウンド タスク トリガーに条件を追加することはお勧めできません。
バックグラウンド タスク登録関数を呼び出し、タスクを登録します。バックグラウンド タスクの登録について詳しくは、「バックグラウンド タスクを登録する方法」をご覧ください。
次のコードでは、ServicingComplete タスクを登録しています。
var entryPoint = "js\\ServicingCompleteTask.js"; var taskName = "ServicingComplete background task"; var task = RegisterBackgroundTask(entryPoint, taskName, servicingCompleteTrigger, null);
注 Windows Phone ストア アプリでは、バックグラウンド タスクを登録する前に RequestAccessAsync を 1 回呼び出す必要があります。
ステップ 3: パッケージ マニフェストでバックグラウンド タスクを宣言します。
他のバックグラウンド タスクと同様に、ServicingComplete バックグラウンド タスクはパッケージ マニフェストに表示される必要があります。詳しくは、「アプリケーション マニフェストでバックグラウンド タスクを宣言する方法」をご覧ください。以下に例を示します。
注釈
バックグラウンド タスクによるアプリ更新のデバッグに関連する重要な情報については、「バックグラウンド タスクをデバッグする方法 (Windows ストア アプリ)」をご覧ください。