--- title: PushManager.getSubscription() slug: Web/API/PushManager/getSubscription tags: - API - Experimental - Method - PushManager - Reference - Service Workers translation_of: Web/API/PushManager/getSubscription ---
{{SeeCompatTable}}{{ApiRef("Push API")}}
{{domxref("PushManager")}} インターフェースの PushManager.getSubscription() メソッドは、既存のプッシュサブスクリプションを取得します。
これは既存のプッシュサブスクリプションの詳細を含む {{domxref("PushSubscription")}} を解決する {{jsxref("Promise")}} を返します。既存のプッシュサブスクリプションが存在しない場合 null 値で解決されます。
PushManager.getSubscription().then(function(pushSubscription) { ... } );
なし。
{{domxref("PushSubscription")}} オブジェクトで解決される {{jsxref("Promise")}}。
このコードスニペットは、push messaging and notification sample から取ってきました(使用できるライブデモはありません)。
// サブスクリプションをチェックするために、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);
      });
  });
}
| 仕様 | 状態 | コメント | 
|---|---|---|
| {{SpecName('Push API', '#widl-PushManager-getSubscription-Promise-PushSubscription', 'getSubscription()')}} | {{Spec2('Push API')}} | 初期定義。 | 
{{Compat("api.PushManager.getSubscription")}}