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
を返します。この値はgranted
、denied
、default
のいずれかです。PushManager.permissionState()
で置き換えられました。 PushManager.register()
非推奨;-
プッシュサービスに加入します。
PushManager.subscribe()
で置き換えられました。 PushManager.registrations()
非推奨;-
既存のプッシュサブスクリプションを受け取ります。
PushManager.getSubscription()
で置き換えられました。 PushManager.unregister()
非推奨;-
指定したサブスクリプションのエンドポイントを登録解除して削除します。API の更新後は、サブスクリプションは
PushSubscription.unsubscribe()
メソッドを呼び出して登録解除することになりました。
例
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