PushManager
Experimental: これは実験的な機能です。
本番で使用する前にブラウザー互換性一覧表をチェックしてください。
Push API の PushManager
インターフェイスは、サードパーティのサーバーからの通知だけではなく、プッシュ通知へのリクエスト URL を取得するための方法を提供します。
このインターフェイスは、ServiceWorkerRegistration.pushManager
プロパティを経由してアクセスできます。
メモ: このインターフェイスは、廃止された PushRegistrationManager
で以前に提案されていた機能をリプレースしています。
インスタンスプロパティ
PushManager.supportedContentEncodings
(en-US)-
プッシュメッセージのペイロードの暗号化でサポートされているコンテンツエンコーディングの配列を返します。
インスタンスメソッド
PushManager.getSubscription()
-
既存のプッシュサブスクリプションを受け取ります。これは既存のプッシュサブスクリプションの詳細を含む
PushSubscription
を解決するPromise
を返します。既存のプッシュサブスクリプションが存在しない場合、null
値で解決されます。 PushManager.permissionState()
-
現在の
PushSubscription
の許可状況で解決されるPromise
を返します。許可状況は'granted'
、'denied'
、'prompt'
のいずれかです。 PushManager.subscribe()
-
プッシュサービスを提供します。プッシュサブスクリプションの詳細を含む
PushSubscription
オブジェクトで解決されるPromise
を返します。現在の service worker に既存のサブスクリプションがない場合、新しいプッシュサブスクリプションが生成されます。
非推奨のメソッド
PushManager.hasPermission()
(en-US) 非推奨-
リクエストしている Web アプリの
PushPermissionStatus
で解決されるPromise
を返します。この値はgranted
、denied
、default
のいずれかです。PushManager.permissionState()
で置き換えられました。 PushManager.register()
非推奨-
プッシュサービスを提供します。
PushManager.subscribe()
で置き換えられました。 PushManager.registrations()
非推奨-
既存のプッシュサブスクリプションを受け取ります。
PushManager.getSubscription()
で置き換えられました。 PushManager.unregister()
非推奨-
指定のサブスクリプションエンドポイントを解除して削除します。API のアップデートで、サブスクリプションは、
PushSubscription.unsubscribe()
メソッドを呼び出して解除することになりました。
例
this.onpush = function(event) {
console.log(event.data);
// ここから、IndexedDB にデータを書き込んだり、いずれかのウィンドウに
// それを送信したり、通知を表示したりできます。
}
navigator.serviceWorker.register('serviceworker.js').then(
function(serviceWorkerRegistration) {
serviceWorkerRegistration.pushManager.subscribe().then(
function(pushSubscription) {
console.log(pushSubscription.subscriptionId);
console.log(pushSubscription.endpoint);
// ここから、IndexedDB にデータを書き込んだり、いずれかのウィンドウに
// それを送信したり、通知を表示したりできます。
}, function(error) {
// 開発中は、コンソールにエラーを表示するのに役立ちます。
// 本番環境では、アプリケーションサーバにエラー情報を送信
// するためにも 役立ちます。
console.log(error);
}
);
});
仕様書
Specification |
---|
Push API # pushmanager-interface |
ブラウザーの互換性
BCD tables only load in the browser