PushManager: getSubscription() メソッド

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

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

構文

js
getSubscription()

引数

なし。

返値

Promise です。これは PushSubscription オブジェクトまたは null で解決されます。

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

js
// サブスクリプションをチェックするためにサービスワーカーの登録が必要
navigator.serviceWorker.ready.then((serviceWorkerRegistration) => {
  // 既にプッシュメッセージのサブスクリプションがあるか?
  serviceWorkerRegistration.pushManager
    .getSubscription()
    .then((subscription) => {
      // プッシュメッセージに加入/脱退する任意の UI を有効にする
      const 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((err) => {
      console.error(`Error during getSubscription(): ${err}`);
    });
});

仕様書

Specification
Push API
# dom-pushmanager-getsubscription

ブラウザーの互換性

BCD tables only load in the browser