Push API の PushManager インターフェースは、3rd パーティーのサーバーからの通知だけではなく、プッシュ通知へのリクエスト URL を取得するための方法を提供します。
このインターフェースは、ServiceWorkerRegistration.pushManager プロパティを経由してアクセスできます。
ノート:このインターフェースは、廃止された PushRegistrationManagerで以前に提案されていた機能をリプレースしています。
プロパティ
PushManager.supportedContentEncodings- プッシュメッセージのペイロードの暗号化でサポートされているコンテンツエンコーディングの配列を返します。
メソッド
PushManager.getSubscription()- 既存のプッシュサブスクリプションを受け取ります。これは既存のプッシュサブスクリプションの詳細を含む
PushSubscriptionを解決するPromiseを返します。既存のプッシュサブスクリプションが存在しない場合、null値で解決されます。 PushManager.permissionState()- 現在の
PushSubscriptionの許可状況で解決されるPromiseを返します。許可状況は'granted'、'denied'、'prompt'のいずれかです。 PushManager.subscribe()- プッシュサービスを提供します。プッシュサブスクリプションの詳細を含む
PushSubscriptionオブジェクトで解決されるPromiseを返します。現在の service worker に既存のサブスクリプションがない場合、新しいプッシュサブスクリプションが生成されます。
非推奨のメソッド
PushManager.hasPermission()- リクエストしている 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);
}
);
});
仕様
| 仕様 | 状態 | コメント |
|---|---|---|
| Push API PushManager の定義 |
草案 | 初期定義。 |
ブラウザー実装状況
このページの互換性テーブルは構造化データから作成されています。データに貢献したい場合、https://github.com/mdn/browser-compat-data をチェックし、プルリクエストを送ってください。
Update compatibility data on GitHub
| デスクトップ | モバイル | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
PushManager | Chrome 完全対応 42 | Edge
完全対応
16
| Firefox
完全対応
44
| IE 未対応 なし | Opera 完全対応 29 | Safari 未対応 なし | WebView Android 未対応 なし | Chrome Android 完全対応 42 | Firefox Android
完全対応
48
| Opera Android 完全対応 29 | Safari iOS 未対応 なし | Samsung Internet Android 完全対応 4.0 |
getSubscription | Chrome 完全対応 42 | Edge
完全対応
16
| Firefox
完全対応
44
| IE 未対応 なし | Opera 完全対応 29 | Safari 未対応 なし | WebView Android 未対応 なし | Chrome Android 完全対応 42 | Firefox Android
完全対応
48
| Opera Android 完全対応 29 | Safari iOS 未対応 なし | Samsung Internet Android 完全対応 4.0 |
hasPermission | Chrome 完全対応 42 | Edge
完全対応
16
| Firefox
完全対応
44
| IE 未対応 なし | Opera 完全対応 29 | Safari 未対応 なし | WebView Android 未対応 なし | Chrome Android 完全対応 42 | Firefox Android
完全対応
48
| Opera Android 完全対応 29 | Safari iOS 未対応 なし | Samsung Internet Android 完全対応 4.0 |
permissionState | Chrome 完全対応 42 | Edge
完全対応
16
| Firefox
完全対応
44
| IE 未対応 なし | Opera 完全対応 29 | Safari 未対応 なし | WebView Android 未対応 なし | Chrome Android 完全対応 42 | Firefox Android
完全対応
48
| Opera Android 完全対応 29 | Safari iOS 未対応 なし | Samsung Internet Android 完全対応 4.0 |
register | Chrome 完全対応 42 | Edge
完全対応
16
| Firefox
完全対応
44
| IE 未対応 なし | Opera 完全対応 29 | Safari 未対応 なし | WebView Android 未対応 なし | Chrome Android 完全対応 42 | Firefox Android
完全対応
48
| Opera Android 完全対応 29 | Safari iOS 未対応 なし | Samsung Internet Android 完全対応 4.0 |
registrations | Chrome 完全対応 42 | Edge
完全対応
16
| Firefox
完全対応
44
| IE 未対応 なし | Opera 完全対応 29 | Safari 未対応 なし | WebView Android 未対応 なし | Chrome Android 完全対応 42 | Firefox Android
完全対応
48
| Opera Android 完全対応 29 | Safari iOS 未対応 なし | Samsung Internet Android 完全対応 4.0 |
subscribe | Chrome
完全対応
42
| Edge
完全対応
16
| Firefox
完全対応
44
| IE 未対応 なし | Opera 完全対応 29 | Safari 未対応 なし | WebView Android 未対応 なし | Chrome Android 完全対応 42 | Firefox Android
完全対応
48
| Opera Android 完全対応 29 | Safari iOS 未対応 なし | Samsung Internet Android 完全対応 4.0 |
supportedContentEncodings | Chrome 完全対応 60 | Edge
完全対応
16
| Firefox
完全対応
44
| IE 未対応 なし | Opera 完全対応 47 | Safari 未対応 なし | WebView Android 未対応 なし | Chrome Android 完全対応 60 | Firefox Android
完全対応
48
| Opera Android 完全対応 44 | Safari iOS 未対応 なし | Samsung Internet Android 完全対応 4.0 |
unregister | Chrome 完全対応 42 | Edge
完全対応
16
| Firefox
完全対応
44
| IE 未対応 なし | Opera 完全対応 29 | Safari 未対応 なし | WebView Android 未対応 なし | Chrome Android 完全対応 42 | Firefox Android
完全対応
48
| Opera Android 完全対応 29 | Safari iOS 未対応 なし | Samsung Internet Android 完全対応 4.0 |
凡例
- 完全対応
- 完全対応
- 未対応
- 未対応
- 実験的。動作が変更される可能性があります。
- 実験的。動作が変更される可能性があります。
- 実装ノートを参照してください。
- 実装ノートを参照してください。
- ユーザーが明示的にこの機能を有効にしなければなりません。
- ユーザーが明示的にこの機能を有効にしなければなりません。