PushManager

PushManagerプッシュ API のインターフェイスで、サードパーティのサーバーからの通知だけではなく、プッシュ通知へのリクエスト URL を取得するための方法を提供します。

このインターフェイスは、ServiceWorkerRegistration.pushManager プロパティを経由してアクセスできます。

インスタンスプロパティ

PushManager.supportedContentEncodings

プッシュメッセージのペイロードの暗号化でサポートされているコンテンツエンコーディングの配列を返します。

インスタンスメソッド

PushManager.getSubscription()

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

PushManager.permissionState()

現在の PushSubscription の許可状況で解決される Promise を返します。許可状況は 'granted''denied''prompt' のいずれかです。

PushManager.subscribe()

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

非推奨のメソッド

PushManager.hasPermission() 非推奨

リクエストしているウェブアプリの PushPermissionStatus で解決される Promise を返します。この値は granteddenieddefault のいずれかです。PushManager.permissionState() で置き換えられました。

PushManager.register() 非推奨

プッシュサービスに加入します。 PushManager.subscribe() で置き換えられました。

PushManager.registrations() 非推奨

既存のプッシュサブスクリプションを受け取ります。PushManager.getSubscription() で置き換えられました。

PushManager.unregister() 非推奨

指定したサブスクリプションのエンドポイントを登録解除して削除します。API の更新後は、サブスクリプションは PushSubscription.unsubscribe() メソッドを呼び出して登録解除することになりました。

js

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

navigator.serviceWorker
  .register("serviceworker.js")
  .then((serviceWorkerRegistration) => {
    serviceWorkerRegistration.pushManager.subscribe().then(
      (pushSubscription) => {
        console.log(pushSubscription.endpoint);
        // これでアプリケーションサーバーが使用できるプッシサブスクリプションの
        // 詳細が利用できるようになり、例えば XMLHttpRequest を使用してサーバーに
        // 送信することができます。
      },
      (error) => {
        console.error(error);
      },
    );
  });

仕様書

Specification
Push API
# pushmanager-interface

ブラウザーの互換性

BCD tables only load in the browser

関連項目