Thanks to visit codestin.com
Credit goes to developer.mozilla.org

このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。

View in English Always switch to English

BackgroundFetchRegistration

利用可能性は限定的

この機能はベースラインではありません。最も広く使用されているブラウザーの一部で動作しません。

Want more support for this feature? Tell us why.

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

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

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

EventTarget BackgroundFetchRegistration

プロパティ

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

BackgroundFetchRegistration.id 読取専用

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

BackgroundFetchRegistration.uploadTotal 読取専用

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

BackgroundFetchRegistration.uploaded 読取専用

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

BackgroundFetchRegistration.downloadTotal 読取専用

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

BackgroundFetchRegistration.downloaded 読取専用

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

BackgroundFetchRegistration.result 読取専用

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

BackgroundFetchRegistration.failureReason 読取専用

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

""

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

"aborted"

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

"bad-status"

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

"fetch-error"

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

"quota-exceeded"

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

"download-total-exceeded"

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

BackgroundFetchRegistration.recordsAvailable 読取専用

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

メソッド

BackgroundFetchRegistration.abort()

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

BackgroundFetchRegistration.match()

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

BackgroundFetchRegistration.matchAll()

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

イベント

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

progress

次のプロパティのいずれかに変化があったとき、発火されます。: 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);
});

仕様書

仕様書
Background Fetch
# background-fetch-registration

ブラウザーの互換性