PushManager
Baseline
広く利用可能
*
この機能は広く実装されており、多くのバージョンの端末やブラウザーで動作します。2023年3月以降、すべてのブラウザーで利用可能です。
* この機能の一部は、対応レベルが異なる場合があります。
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);
},
);
});
仕様書
| 仕様書 |
|---|
| Push API> # pushmanager-interface> |