PushManager.getSubscription()

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

PushManager インターフェイスの PushManager.getSubscription() メソッドは、既存のプッシュサブスクリプションを取得します。

これは既存のプッシュサブスクリプションの詳細を含む PushSubscription を解決する Promise を返します。既存のプッシュサブスクリプションが存在しない場合 null 値で解決されます。

構文

js

PushManager.getSubscription().then(function(pushSubscription) { ... } );

引数

なし。

返値

PushSubscription オブジェクトで解決される Promise

このコードスニペットは、push messaging and notification sample から取ってきました(使用できるライブデモはありません)。

js

// サブスクリプションをチェックするために、service worker の登録が必要である。
  navigator.serviceWorker.ready.then(function(serviceWorkerRegistration) {
    // 既にプッシュメッセージサブスクリプションがあるか?
    serviceWorkerRegistration.pushManager.getSubscription()
      .then(function(subscription) {
        // プッシュメッセージからサブスクライブ / アンサブスクライブ
        // する任意の UI を有効にする
        var pushButton = document.querySelector('.js-push-button');
        pushButton.disabled = false;

        if (!subscription) {
          // プッシュを購読していない場合、ユーザーがプッシュできるように
          // UI を設定する。
          return;
        }

        // 最新の subscriptionId でサーバ同期を維持する。
        sendSubscriptionToServer(subscription);

        showCurlCommand(subscription);

        // プッシュメッセージの購読を表示するために
        // UI を設定する。
        pushButton.textContent = 'Disable Push Messages';
        isPushEnabled = true;
      })
      .catch(function(err) {
        window.Demo.debug.log('Error during getSubscription()', err);
      });
  });
}

仕様書

Specification
Push API
# dom-pushmanager-getsubscription

ブラウザーの互換性

BCD tables only load in the browser

関連項目