PeriodicSyncManager

Experimental: これは実験的な機能です。
本番で使用する前にブラウザー互換性一覧表をチェックしてください。

PeriodicSyncManagerウェブ定期バックグラウンド同期 API のインターフェイスは、ネットワーク接続のある定期的な間隔で実行するタスクをサービスワーカーの中に登録する方法を提供します。これらのタスクは、定期バックグラウンド同期リクエストと呼ばれます。PeriodicSyncManager には ServiceWorkerRegistration.periodicSync を通してアクセスします。

インスタンスプロパティ

なし。

インスタンスメソッド

PeriodicSyncManager.register Experimental

指定したタグとオプションでブラウザーに定期同期リクエストを登録します。登録が完了した時点で解決する Promise を返します。

PeriodicSyncManager.getTags Experimental

定期同期を行うために現在登録されているタグを表す文字列のリストで解決される Promise を返します。

PeriodicSyncManager.unregister Experimental

指定されたタグに対応する定期同期のリクエストを登録解除し、登録解除が完了すると解決する Promise を返します。

次の例は、インターフェイスを使用する方法を示しています。

定期バックグラウンド同期のリクエスト

以下の非同期関数は、閲覧コンテキストから最小 1 日間隔で定期バックグラウンド同期を登録するものです。

js
async function registerPeriodicNewsCheck() {
  const registration = await navigator.serviceWorker.ready;
  try {
    await registration.periodicSync.register("get-latest-news", {
      minInterval: 24 * 60 * 60 * 1000,
    });
  } catch {
    console.log("Periodic Sync could not be registered!");
  }
}

タグによる定期バックグラウンド同期の検証

このコードは、指定されたタグを持つ定期バックグラウンド同期タスクが登録されているかどうかを調べるものです。

js
navigator.serviceWorker.ready.then((registration) => {
  registration.periodicSync.getTags().then((tags) => {
    if (tags.includes("get-latest-news")) skipDownloadingLatestNewsOnPageLoad();
  });
});

定期バックグラウンド同期タスクの削除

以下は、定期バックグラウンド同期タスクを削除して、バックグラウンドでの記事同期を停止するコードです。

js
navigator.serviceWorker.ready.then((registration) => {
  registration.periodicSync.unregister("get-latest-news");
});

仕様書

Specification
Web Periodic Background Synchronization
# periodicsyncmanager-interface

ブラウザーの互換性

BCD tables only load in the browser

関連情報