BackgroundFetchRegistration

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

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

Background Fetch APIBackgroundFetchRegistration インターフェイスは個々のバックグラウンドフェッチを表します。

BackgroundFetchRegistration インスタンスは、BackgroundFetchManager.fetch() メソッド、または BackgroundFetchManager.get() メソッドによって返されるため、コンストラクターは存在しません。

EventTarget BackgroundFetchRegistration

プロパティ

以下のプロパティは、BackgroundFetchRegistration インスタンスからコピーされた便利なプロパティとして、同期的に利用できます。

BackgroundFetchRegistration.id 読取専用 Experimental

バックグラウンドフェッチのIDを示す文字列。

BackgroundFetchRegistration.uploadTotal 読取専用 Experimental

アップロードされる総バイト数を表す number

BackgroundFetchRegistration.uploaded 読取専用 Experimental

送信に成功したバイト数を表す number。初期値は 0

BackgroundFetchRegistration.downloadTotal 読取専用 Experimental

ダウンロード全体のバイト数を表す number。これはバックグラウンドフェッチの登録時に設定される値です。設定されなかった場合は 0 となります。

BackgroundFetchRegistration.downloaded 読取専用 Experimental

今までにダウンロードされたバイト数を表す number。初期値は 0

BackgroundFetchRegistration.result 読取専用 Experimental

初期状態では空文字列。完了時には "success" または "failure" という文字列。

BackgroundFetchRegistration.failureReason 読取専用 Experimental

下記文字列のいずれかの値をとります。

""

バックグラウンドフェッチが完了していない、もしくは成功したとき。

"aborted"

ユーザーによって操作がキャンセルされたとき、または abort() が呼び出されたとき。

"bad-status"

応答ステータスが OK ではないとき ( 200 ~ 299 の範囲外のとき)

"fetch-error"

その他の理由によりフェッチが失敗したとき。例えば、CORS 違反や、ネットワーク障害が理由の場合です。

"quota-exceeded"

途中でストレージ容量の上限に達したとき。

"download-total-exceeded"

バックグラウンドフェッチの登録時に指定された downloadTotal を超過したとき。

BackgroundFetchRegistration.recordsAvailable 読取専用 Experimental

recordsAvailable フラグが設定されているかどうかを表す boolean

メソッド

BackgroundFetchRegistration.abort() Experimental

バックグラウンドフェッチを中止します。フェッチの中止が成功したときに true で解決される Promise を返します。

BackgroundFetchRegistration.match() Experimental

引数に対して最初にマッチした BackgroundFetchRecord オブジェクトを 1 つ返します。

BackgroundFetchRegistration.matchAll() Experimental

リクエストと応答を含む BackgroundFetchRecord オブジェクトの配列で解決される Promise を返します。

イベント

addEventListener() を用いて、または、このインターフェイスの oneventname プロパティにイベントリスナーを割り当てて、これらイベントの発生を待ち受けてください。

progress Experimental

次のプロパティのいずれかに変化があったとき、発火されます。: uploadeddownloadedresult または failureReason

以下のコードは、"my-fetch" という id を持つ BackGroundFetchRegistrationbgFetch として作成しています。

js
navigator.serviceWorker.ready.then(async (swReg) => {
  const bgFetch = await swReg.backgroundFetch.fetch(
    "my-fetch",
    ["/ep-5.mp3", "ep-5-artwork.jpg"],
    {
      title: "Episode 5: Interesting things.",
      icons: [
        {
          sizes: "300x300",
          src: "/ep-5-icon.png",
          type: "image/png",
        },
      ],
      downloadTotal: 60 * 1024 * 1024,
    },
  );
});

id をコンソールにログ出力すると、"my-fetch" が出力されます。

js
console.log(bgFetch.id); // "my-fetch"

match() メソッドを使って、registration の要素である BackgroundFetchRecord から特定の 1 つを探すことができます。

js
bgFetch.match("/ep-5.mp3").then(async (record) => {
  if (!record) {
    console.log("レコードは見つかりませんでした。");
    return;
  }

  console.log(`リクエスト: `, record.request);
  const response = await record.responseReady;
  console.log(`応答: `, response);
});

仕様書

Specification
Background Fetch
# background-fetch-registration

ブラウザーの互換性

Report problems with this compatibility data on GitHub
desktopmobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
BackgroundFetchRegistration
Experimental
abort
Experimental
downloadTotal
Experimental
downloaded
Experimental
failureReason
Experimental
id
Experimental
match
Experimental
matchAll
Experimental
progress event
Experimental
recordsAvailable
Experimental
result
Experimental
uploadTotal
Experimental
uploaded
Experimental

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
No support
No support
Experimental. Expect behavior to change in the future.