PushManager

Baseline 2023
Newly available

Since March 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.

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

ブラウザーの互換性

Report problems with this compatibility data on GitHub
desktopmobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
PushManager
getSubscription
hasPermission
DeprecatedNon-standard
permissionState
register
DeprecatedNon-standard
registrations
DeprecatedNon-standard
subscribe
supportedContentEncodings static property
unregister
DeprecatedNon-standard

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
No support
No support
Non-standard. Check cross-browser support before using.
Deprecated. Not for use in new websites.
See implementation notes.

関連項目