これは実験的な機能です。本番で使用する前にブラウザー実装状況をチェックしてください。

PushManager インターフェースの subscribe() メソッドは、プッシュサービスを提供します。

これは、プッシュサブスクリプションの詳細を含む PushSubscription オブジェクトで解決される Promise を返します。現在の service worker に既存のサブスクリプションがない場合、新しいプッシュサブスクリプションが生成されます。

構文

​PushManager.subscribe(options).then(function(pushSubscription) { ... } );

パラメーター

options Optional
オプションの設定パラメータを含むオブジェクト。次のプロパティを設定できる:
  • userVisibleOnly: 返されたプッシュサブスクリプションの効果がユーザーに表示するメッセージにだけ使われるかを示す boolean 値。
  • applicationServerKey: プッシュサーバーがアプリケーションサーバーを認証するために使用する 楕円曲線 DSA P-256 公開鍵を含む、Base64 でエンコードされた DOMString または ArrayBuffer。指定した場合は、アプリケーションサーバーから発するすべてのメッセージで VAPID 認証スキームを使用しなければならず、また対応する秘密鍵で署名した JWT を含めなければなりません。この鍵は、データを暗号化するために使用する ECDH 鍵と同じではありません。詳しくは "Using VAPID with WebPush" をご覧ください。

注記: この引数は Chrome など、一部のブラウザーで必須です。

戻り値

PushSubscription オブジェクトを解決する Promise

this.onpush = function(event) {
  console.log(event.data);
  // ここから、IndexedDB にデータを書き込んだり、いずれかのウィンドウに
  // それを送信したり、通知を表示したりできます。
}

navigator.serviceWorker.register('serviceworker.js');

// Use serviceWorker.ready to ensure that you can subscribe for push
navigator.serviceWorker.ready.then(
  function(serviceWorkerRegistration) {
    var options = {
      userVisibleOnly: true,
      applicationServerKey: applicationServerKey
    };
    serviceWorkerRegistration.pushManager.subscribe(options).then(
      function(pushSubscription) {
        console.log(pushSubscription.endpoint);
        // アプリケーションサーバが必要としているプッシュサブスクリプションの
        // 詳細はここから使用できます。たとえば、XMLHttpRequest を使用して
        // これを送信できます。
      }, function(error) {
        // 開発中は、コンソールにエラーを表示するのに役立ちます。
        // 本番環境では、アプリケーションサーバにエラー情報を送信
        //  するためにも 役立ちます。
        console.log(error);
      }
    );
  });

仕様

仕様 状態 コメント
Push API
subscribe() の定義
草案 初期定義

ブラウザ実装状況

機能ChromeEdgeFirefoxInternet ExplorerOperaSafari
基本対応421

162

17

443 なし29 なし
機能Android webviewChrome for AndroidEdge mobileFirefox for AndroidOpera AndroidiOS SafariSamsung Internet
基本対応 なし42 あり48429 なし4.0

1. The options parameter with a applicationServerKey value is required.

2. From version 16: this feature is behind the Enable service workers preference.

3. Service workers (and Push) have been disabled in the Firefox 45 and 52 Extended Support Releases (ESR.)

4. Push enabled by default.

関連項目

ドキュメントのタグと貢献者

このページの貢献者: yyss, YuichiNukiyama
最終更新者: yyss,