ServiceWorkerRegistration

この記事は翻訳が完了していません。 この記事の翻訳にご協力ください

Service Worker APIServiceWorkerRegistration インターフェイスは、サービスワーカー登録を表します。 あなたは同じオリジンを共有する1つ以上のページを制御するサービスワーカーを登録します。

サービスワーカー登録の存続期間は、対応するサービスワーカークライアントの存続期間内でそれらを表す ServiceWorkerRegistration オブジェクトの存続期間を超えています。 ブラウザーは、アクティブな ServiceWorkerRegistration オブジェクトの永続的なリストを維持します。

: この機能は Web Worker で使用できます。

プロパティ

また、その親インターフェイスである EventTarget からプロパティを実装します。

ServiceWorkerRegistration.scope 読取専用
サービスワーカー登録の一意の識別子を返します。 これは、ServiceWorker を登録する文書と同じオリジンにある必要があります。
ServiceWorkerRegistration.installing 読取専用
状態がインストール中(installing)のサービスワーカーを返します。 これは最初は null に設定されています。
ServiceWorkerRegistration.waiting 読取専用
状態がインストール済み(installed)のサービスワーカーを返します。 これは最初は null に設定されています。
ServiceWorkerRegistration.active 読取専用
状態がアクティブ化中(activating)またはアクティブ化済み(activated)のサービスワーカーを返します。 これは最初は null に設定されています。 クライアントの URL が登録のスコープ内にある場合、アクティブワーカーは ServiceWorkerClient を制御します(ServiceWorkerContainer.register を最初に呼び出したときに設定した scope オプション)。
ServiceWorkerRegistration.navigationPreload 読取専用
現在のサービスワーカー登録に関連する NavigationPreloadManager のインスタンスを返します。
ServiceWorkerRegistration.pushManager 読取専用
購読申し込み、アクティブな購読の取得、プッシュの許可状況へのアクセスなど、プッシュの購読を管理するための PushManager インターフェイスへの参照を返します。
ServiceWorkerRegistration.sync 読取専用
バックグラウンド同期プロセスを管理する SyncManager インターフェイスへの参照を返します。

未実装プロパティ

serviceWorkerRegistration.periodicSync 読取専用
定期的なバックグラウンド同期プロセスを管理する PeriodicSyncManager インターフェイスへの参照を返します。 これは、ある時点でサービスワーカーの説明でアイデアとして言及されましたが、まだどこにも実装されていません。

イベントハンドラー

ServiceWorkerRegistration.onupdatefound 読取専用
タイプが updatefound のイベントが発生するたびに呼び出される EventListener のプロパティ。 ServiceWorkerRegistration.installing プロパティが新しいサービスワーカーを取得するたびに発生します。

メソッド

また、その親インターフェースである EventTarget からメソッドを実装します。

ServiceWorkerRegistration.getNotifications()
Notification オブジェクトの配列に解決される Promise を返します。
ServiceWorkerRegistration.showNotification()
要求したタイトルの通知を表示します。
ServiceWorkerRegistration.update()
サービスワーカーの更新されたバージョンを、キャッシュを調べずに、サーバーでチェックします。
ServiceWorkerRegistration.unregister()
サービスワーカー登録を解除し、Promise を返します。 サービスワーカーは、登録が解除される前に進行中の操作を完了します。

この例では、コードはまずブラウザーがサービスワーカーをサポートしているかどうかをチェックし、サポートしている場合はそれを登録します。 次に、updatefound リスナーを追加します。 このリスナーでは、サービスワーカー登録を使用して、サービスワーカーの状態のさらなる変更をリッスンします。 サービスワーカーが最後に登録されてから変更されていない場合、updatefound イベントは発生しません。

if ('serviceWorker' in navigator) {
  navigator.serviceWorker.register('/sw.js')
  .then(function(registration) {
    registration.addEventListener('updatefound', function() {
      // updatefound が発生した場合は、新しいサービスワーカーを
      // インストールしていることを意味します。
      var installingWorker = registration.installing;
      console.log('新しいサービスワーカーをインストールしています:',
        installingWorker);

      // インストール中のサービスワーカーの状態の変更を、
      // installingWorker.onstatechange を介してリッスンできます
    });
  })
  .catch(function(error) {
    console.log('サービスワーカーの登録に失敗しました:', error);
  });
} else {
  console.log('サービスワーカーをサポートしていません。');
}

仕様

仕様 状態 コメント
Service Workers
ServiceWorkerRegistration の定義
草案 初期定義
Push API
PushManager の定義
草案 pushManager プロパティを追加。
Notifications API 現行の標準 showNotification() メソッドと getNotifications() メソッドを追加。
Web Background Synchronization 現行の標準 sync プロパティを追加。

ブラウザーの互換性

Update compatibility data on GitHub
デスクトップモバイル
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeAndroid 版 FirefoxAndroid 版 OperaiOSのSafariSamsung Internet
ServiceWorkerRegistration
実験的
Chrome 完全対応 40Edge 完全対応 17
完全対応 17
完全対応 16
無効
無効 From version 16: this feature is behind the Enable service workers preference.
Firefox 完全対応 44
補足
完全対応 44
補足
補足 Extended Support Releases (ESR) before Firefox 78 ESR do not support service workers and the Push API.
IE 未対応 なしOpera 完全対応 27Safari 完全対応 11.1WebView Android 完全対応 40Chrome Android 完全対応 40Firefox Android 完全対応 44Opera Android 完全対応 27Safari iOS 完全対応 11.3Samsung Internet Android 完全対応 4.0
active
実験的
Chrome 完全対応 40Edge 完全対応 17
完全対応 17
完全対応 16
無効
無効 From version 16: this feature is behind the Enable service workers preference.
Firefox 完全対応 44
補足
完全対応 44
補足
補足 Extended Support Releases (ESR) before Firefox 78 ESR do not support service workers and the Push API.
IE 未対応 なしOpera 完全対応 27Safari 完全対応 11.1WebView Android 完全対応 40Chrome Android 完全対応 40Firefox Android 完全対応 44Opera Android 完全対応 27Safari iOS 完全対応 11.3Samsung Internet Android 完全対応 4.0
backgroundFetch
実験的
Chrome 完全対応 74Edge 未対応 なしFirefox 未対応 なしIE 未対応 なしOpera 完全対応 62Safari 未対応 なしWebView Android 未対応 なしChrome Android 完全対応 74Firefox Android 未対応 なしOpera Android 完全対応 53Safari iOS 未対応 なしSamsung Internet Android 完全対応 11.0
getNotifications
実験的
Chrome 完全対応 40Edge 完全対応 17
完全対応 17
完全対応 16
無効
無効 From version 16: this feature is behind the Enable service workers preference.
Firefox 完全対応 46
補足
完全対応 46
補足
補足 Extended Support Releases (ESR) before Firefox 78 ESR do not support service workers and the Push API.
IE 未対応 なしOpera 完全対応 27Safari 完全対応 11.1WebView Android 未対応 なしChrome Android 完全対応 40Firefox Android 完全対応 46Opera Android 完全対応 27Safari iOS 完全対応 11.3Samsung Internet Android 完全対応 4.0
installing
実験的
Chrome 完全対応 40Edge 完全対応 17
完全対応 17
完全対応 16
無効
無効 From version 16: this feature is behind the Enable service workers preference.
Firefox 完全対応 44
補足
完全対応 44
補足
補足 Extended Support Releases (ESR) before Firefox 78 ESR do not support service workers and the Push API.
IE 未対応 なしOpera 完全対応 27Safari 完全対応 11.1WebView Android 完全対応 40Chrome Android 完全対応 40Firefox Android 完全対応 44Opera Android 完全対応 27Safari iOS 完全対応 11.3Samsung Internet Android 完全対応 4.0
navigationPreload
実験的
Chrome 完全対応 59Edge 完全対応 17
完全対応 17
完全対応 16
無効
無効 From version 16: this feature is behind the Enable service workers preference.
Firefox 完全対応 44
補足
完全対応 44
補足
補足 Extended Support Releases (ESR) before Firefox 78 ESR do not support service workers and the Push API.
IE 未対応 なしOpera 完全対応 46Safari 完全対応 11.1WebView Android 完全対応 59Chrome Android 完全対応 59Firefox Android 完全対応 44Opera Android 完全対応 43Safari iOS 完全対応 11.3Samsung Internet Android 完全対応 4.0
onupdatefound
実験的
Chrome 完全対応 40Edge 完全対応 17
完全対応 17
完全対応 16
無効
無効 From version 16: this feature is behind the Enable service workers preference.
Firefox 完全対応 44
補足
完全対応 44
補足
補足 Extended Support Releases (ESR) before Firefox 78 ESR do not support service workers and the Push API.
IE 未対応 なしOpera 完全対応 27Safari 完全対応 11.1WebView Android 完全対応 40Chrome Android 完全対応 40Firefox Android 完全対応 44Opera Android 完全対応 27Safari iOS 完全対応 11.3Samsung Internet Android 完全対応 4.0
paymentManagerChrome 完全対応 56
無効
完全対応 56
無効
無効 From version 56: this feature is behind the #service-worker-payment-apps preference (needs to be set to Enabled). To change preferences in Chrome, visit chrome://flags.
Edge 完全対応 ≤79
無効
完全対応 ≤79
無効
無効 From version ≤79: this feature is behind the #service-worker-payment-apps preference (needs to be set to Enabled).
Firefox ? IE 未対応 なしOpera 完全対応 ありSafari ? WebView Android 完全対応 ありChrome Android 完全対応 56
無効
完全対応 56
無効
無効 From version 56: this feature is behind the #service-worker-payment-apps preference (needs to be set to Enabled). To change preferences in Chrome, visit chrome://flags.
Firefox Android ? Opera Android 完全対応 ありSafari iOS ? Samsung Internet Android 未対応 なし
periodicSync
実験的非標準
Chrome 完全対応 80Edge 完全対応 80Firefox 未対応 なしIE 未対応 なしOpera 未対応 なしSafari 未対応 なしWebView Android 完全対応 80Chrome Android 完全対応 80Firefox Android 未対応 なしOpera Android 未対応 なしSafari iOS 未対応 なしSamsung Internet Android 未対応 なし
pushManager
実験的
Chrome 完全対応 40Edge 完全対応 17
完全対応 17
完全対応 16
無効
無効 From version 16: this feature is behind the Enable service workers preference.
Firefox 完全対応 44
補足
完全対応 44
補足
補足 Extended Support Releases (ESR) before Firefox 78 ESR do not support service workers and the Push API.
IE 未対応 なしOpera 完全対応 27Safari 完全対応 11.1WebView Android 未対応 なしChrome Android 完全対応 40Firefox Android 完全対応 44Opera Android 完全対応 27Safari iOS 完全対応 11.3Samsung Internet Android 完全対応 4.0
scope
実験的
Chrome 完全対応 40Edge 完全対応 17
完全対応 17
完全対応 16
無効
無効 From version 16: this feature is behind the Enable service workers preference.
Firefox 完全対応 44
補足
完全対応 44
補足
補足 Extended Support Releases (ESR) before Firefox 78 ESR do not support service workers and the Push API.
IE 未対応 なしOpera 完全対応 27Safari 完全対応 11.1WebView Android 完全対応 40Chrome Android 完全対応 40Firefox Android 完全対応 44Opera Android 完全対応 27Safari iOS 未対応 なしSamsung Internet Android 完全対応 4.0
showNotification
実験的
Chrome 完全対応 40Edge 完全対応 17
完全対応 17
完全対応 16
無効
無効 From version 16: this feature is behind the Enable service workers preference.
Firefox 完全対応 46
補足
完全対応 46
補足
補足 Extended Support Releases (ESR) before Firefox 78 ESR do not support service workers and the Push API.
IE 未対応 なしOpera 完全対応 27Safari 未対応 なしWebView Android 完全対応 40Chrome Android 完全対応 40Firefox Android 完全対応 46Opera Android 完全対応 27Safari iOS 未対応 なしSamsung Internet Android 完全対応 4.0
sync
実験的
Chrome 完全対応 49Edge 完全対応 ≤79Firefox 未対応 なしIE 未対応 なしOpera 完全対応 36Safari 未対応 なしWebView Android 完全対応 49Chrome Android 完全対応 49Firefox Android 未対応 なしOpera Android 完全対応 36Safari iOS 未対応 なしSamsung Internet Android 完全対応 4.0
unregister
実験的
Chrome 完全対応 40Edge 完全対応 17
完全対応 17
完全対応 16
無効
無効 From version 16: this feature is behind the Enable service workers preference.
Firefox 完全対応 44
補足
完全対応 44
補足
補足 Extended Support Releases (ESR) before Firefox 78 ESR do not support service workers and the Push API.
IE 未対応 なしOpera 完全対応 27Safari 完全対応 11.1WebView Android 完全対応 40Chrome Android 完全対応 40Firefox Android 完全対応 44Opera Android 完全対応 27Safari iOS 完全対応 11.3Samsung Internet Android 完全対応 4.0
update
実験的
Chrome 完全対応 45
補足
完全対応 45
補足
補足 Starting with Chrome 46, update() returns a promise that resolves with 'undefined' if the operation completed successfully or there was no update, and rejects if update failed. If the new worker ran but installation failed, the promise still resolves. Formerly, it raised an exception.
補足 Before Chrome 48, this method always bypassed the browser cache. Starting with Chrome 48, it only bypasses the cache when the previous service worker check was more than twenty-four hours ago.
Edge 完全対応 17
完全対応 17
完全対応 16
無効
無効 From version 16: this feature is behind the Enable service workers preference.
Firefox 完全対応 44
補足
完全対応 44
補足
補足 Extended Support Releases (ESR) before Firefox 78 ESR do not support service workers and the Push API.
IE 未対応 なしOpera 完全対応 32
補足
完全対応 32
補足
補足 Starting with Opera 33, update() returns a promise that resolves with 'undefined' if the operation completed successfully or there was no update, and rejects if update failed. If the new worker ran but installation failed, the promise still resolves. Formerly, it raised an exception.
補足 Before Opera 35, this method always bypassed the browser cache. Starting with Opera 35, it only bypasses the cache when the previous service worker check was more than twenty-four hours ago.
Safari 完全対応 11.1WebView Android 完全対応 45
補足
完全対応 45
補足
補足 Starting with Chrome 46, update() returns a promise that resolves with 'undefined' if the operation completed successfully or there was no update, and rejects if update failed. If the new worker ran but installation failed, the promise still resolves. Formerly, it raised an exception.
補足 Before Chrome 48, this method always bypassed the browser cache. Starting with Chrome 48, it only bypasses the cache when the previous service worker check was more than twenty-four hours ago.
Chrome Android 完全対応 45
補足
完全対応 45
補足
補足 Starting with Chrome 46, update() returns a promise that resolves with 'undefined' if the operation completed successfully or there was no update, and rejects if update failed. If the new worker ran but installation failed, the promise still resolves. Formerly, it raised an exception.
補足 Before Chrome 48, this method always bypassed the browser cache. Starting with Chrome 48, it only bypasses the cache when the previous service worker check was more than twenty-four hours ago.
Firefox Android 完全対応 44Opera Android 完全対応 32
補足
完全対応 32
補足
補足 Starting with Opera 33, update() returns a promise that resolves with 'undefined' if the operation completed successfully or there was no update, and rejects if update failed. If the new worker ran but installation failed, the promise still resolves. Formerly, it raised an exception.
補足 Before Opera 35, this method always bypassed the browser cache. Starting with Opera 35, it only bypasses the cache when the previous service worker check was more than twenty-four hours ago.
Safari iOS 未対応 なしSamsung Internet Android 完全対応 4.0
補足
完全対応 4.0
補足
補足 Starting with Samsung Internet 5.0, update() returns a promise that resolves with 'undefined' if the operation completed successfully or there was no update, and rejects if update failed. If the new worker ran but installation failed, the promise still resolves. Formerly, it raised an exception.
補足 Before Samsung Internet 5.0, this method always bypassed the browser cache. Starting with Samsung Internet 5.0, it only bypasses the cache when the previous service worker check was more than twenty-four hours ago.
updateViaCacheChrome 完全対応 68Edge 完全対応 18Firefox 完全対応 57IE 未対応 なしOpera 完全対応 ありSafari 完全対応 11.1WebView Android 完全対応 68Chrome Android 完全対応 68Firefox Android 完全対応 57Opera Android 完全対応 ありSafari iOS 完全対応 ありSamsung Internet Android 完全対応 10.0
waiting
実験的
Chrome 完全対応 40Edge 完全対応 17
完全対応 17
完全対応 16
無効
無効 From version 16: this feature is behind the Enable service workers preference.
Firefox 完全対応 44
補足
完全対応 44
補足
補足 Extended Support Releases (ESR) before Firefox 78 ESR do not support service workers and the Push API.
IE 未対応 なしOpera 完全対応 27Safari 完全対応 11.1WebView Android 完全対応 40Chrome Android 完全対応 40Firefox Android 完全対応 44Opera Android 完全対応 27Safari iOS 未対応 なしSamsung Internet Android 完全対応 4.0

凡例

完全対応  
完全対応
未対応  
未対応
実装状況不明  
実装状況不明
実験的。動作が変更される可能性があります。
実験的。動作が変更される可能性があります。
非標準。ブラウザー間の互換性が低い可能性があります。
非標準。ブラウザー間の互換性が低い可能性があります。
実装ノートを参照してください。
実装ノートを参照してください。
ユーザーが明示的にこの機能を有効にしなければなりません。
ユーザーが明示的にこの機能を有効にしなければなりません。

関連情報