Push messages
PushEvent はプッシュ API のインターフェイスで、受け取ったプッシュメッセージを表します。このイベントは、ServiceWorker の グローバルスコープに送信されます。これは、アプリケーションサーバーから PushSubscription に送信された情報を含みます。
Event ExtendableEvent PushEvent
対応ブラウザ
| 機能 | デスクトップ | モバイル | ||||
|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Safari | Chrome Android | Safari iOS | |
| 42 | 17 | 44 | 16 | 42 | 16.4 | |
permission_push `push` 権限 | 43 | 79 | 46 | 17 | 43 | 17 |
| data は PushEvent インターフェイスの読み取り専用プロパティで、PushSubscription に送信されたデータを含む PushMessageData オブジェクトへの参照を返します。 | 50 | 17 | 44 | 16 | 50 | 16.4 |
| PushEvent() コンストラクターは、新しい PushEvent オブジェクトを生成します。このコンストラクターは、サービスワーカーにのみ公開されていることに注意してください。 | 42 | 17 | 44 | 16 | 42 | 16.4 |
| PushManager はプッシュ API のインターフェイスで、サードパーティのサーバーからの通知だけではなく、プッシュ通知へのリクエスト URL を取得するための方法を提供します。 | 42 | 17 | 44 | 16 | 42 | 16.4 |
| PushManager.getSubscription() は PushManager インターフェイスのメソッドで、既存のプッシュサブスクリプションを取得します。 | 42 | 17 | 44 | 16 | 42 | 16.4 |
| permissionState() は PushManager インターフェイスのメソッドで、プッシュマネージャーの許可状態を示す文字列で解決される Promise を返します。許可状態は、'prompt' か 'denied'、'granted' のいずれかです。 | 44 | 17 | 44 | 16 | 44 | 16.4 |
| subscribe() は PushManager インターフェイスのメソッドで、プッシュサービスに加入します。 | 42 | 17 | 44 | 16 | 42 | 16.4 |
| supportedContentEncodings は PushManager インターフェイスの静的な読み取り専用プロパティで、プッシュメッセージのペイロードを暗号化するために使用できる、対応しているコンテンツコードの配列を返します。 | 60 | 17 | 134 | 16 | 60 | 16.4 |
| PushMessageData はプッシュ API のインターフェイスで、さまざまな形式でサーバーから送信されるプッシュテータを取得する方法を提供します。 | 50 | 17 | 44 | 16 | 50 | 16.4 |
| arrayBuffer() は PushMessageData インターフェイスのメソッドで、プッシュメッセージデータを ArrayBuffer オブジェクトとして抽出します。 | 50 | 17 | 44 | 16 | 50 | 16.4 |
| blob() は PushMessageData インターフェイスのメソッドで、プッシュメッセージデータを Blob オブジェクトとして抽出します。 | 50 | 17 | 44 | 16 | 50 | 16.4 |
| PushMessageData インターフェースの bytes() メソッドは、プッシュメッセージデータを Uint8Array オブジェクトとして抽出します。 | 132 | 132 | 128 | 18 | 132 | 18 |
| json() は PushMessageData インターフェイスのメソッドで、プッシュメッセージのデータを JSON 文字列として解釈し、結果を返します。 | 50 | 17 | 44 | 16 | 50 | 16.4 |
| text() は PushMessageData インターフェイスのメソッドで、プッシュメッセージのデータをプレーンテキスト文字列として抽出します。 | 50 | 17 | 44 | 16 | 50 | 16.4 |
| PushSubscription はプッシュ API のインターフェイスで、サブスクリプションの URL エンドポイントを提供し、ここからプッシュサービスの登録を脱退できます。 | 42 | 17 | 44 | 16 | 42 | 16.4 |
| endpoint は PushSubscription インターフェイスの読み取り専用プロパティで、プッシュサブスクリプションに関連するエンドポイントの入った文字列を返します。 | 42 | 17 | 44 | 16 | 42 | 16.4 |
| expirationTime は PushSubscription インターフェイスの読み取り専用プロパティで、プッシュサブスクリプションに関連付けられたサブスクリプションの有効期限を DOMHighResTimeStamp で返します。存在しなければ null を返します。 | 60 | 17 | 96 | 16 | 60 | 16.4 |
| getKey() は PushSubscription インターフェイスのメソッドで、サーバーに送信されてプッシュメッセージのデータを暗号化するために使用される、クライアントの公開鍵を表す ArrayBuffer を返します。 | 42 | 17 | 44 | 16 | 42 | 16.4 |
| options は PushSubscription インターフェイスの読み取り専用プロパティで、サブスクリプションを作成するために用いられたオプションが入ったオブジェクトです。 | 54 | 17 | 44 | 16 | 54 | 16.4 |
| toJSON() は PushSubscription インターフェイスの メソッドで、標準のシリアライザーです。これは、このサブスクリプションのプロパティの JSON 表現を返す、便利なショートカットを提供します。 | 42 | 17 | 44 | 16 | 50 | 16.4 |
| unsubscribe() は PushSubscription インターフェイスのメソッドで、現在のサブスクリプションから脱退に成功したときに論理値で解決される Promise を返します。 | 42 | 17 | 44 | 16 | 50 | 16.4 |
PushSubscriptionChangeEvent | 138 | 17 | 137 | 16 | 138 | 16.4 |
newSubscription | 138 | 17 | 137 | 16 | 138 | 16.4 |
oldSubscription | 138 | 17 | 137 | 16 | 138 | 16.4 |
PushSubscriptionChangeEvent `PushSubscriptionChangeEvent()` コンストラクタ | 138 | 17 | 137 | 16.1 | 138 | 16.4 |
| Push API の PushSubscriptionOptions インターフェイスは、プッシュサブスクリプションに関連付いたオプションを表します。 | 54 | 17 | 44 | 16 | 54 | 16.4 |
| PushSubscriptionOptions インターフェイスの applicationServerKey 読み取り専用プロパティは、プッシュサーバーが用いる公開鍵です。 | 54 | 17 | 44 | 16 | 54 | 16.4 |
| PushSubscriptionOptions の userVisibleOnly 読み取り専用プロパティは、プッシュサブスクリプションがユーザーに見える効果を持つメッセージのみに使われるかどうかを表します。 | 54 | 17 | | 16 | 54 | 16.4 |
| push イベントは、サービスワーカーがプッシュメッセージを受信したときにサービスワーカーのグローバルスコープ (ServiceWorkerGlobalScope インターフェイスで表現されるもの) に送られます。 | 40 | 17 | 44 | 16 | 40 | 16.4 |
| pushsubscriptionchange イベントはグローバルスコープとしての ServiceWorker へ送信され、アプリケーションの制御の外から起動されたプッシュ通知への加入状況が変化したことを示します。 | 138 | 17 | 44 | 16 | 138 | |
| ServiceWorkerRegistration は サービスワーカー API のインターフェイスで、サービスワーカー登録を表します。 同じオリジンを共有している 1 つ以上のページを制御するサービスワーカーを登録します。 | 40 | 17 | 44 | 11.1 | 40 | 11.3 |
| pushManager は ServiceWorkerRegistration インターフェイスのプロパティで、プッシュサブスクリプションを管理するための PushManager インターフェイスへの参照を返します。 これには、サブスクリプションへの参加、アクティブなサブスクリプションの取得、プッシュ通知の許可状況へのアクセスの対応が含まれます。 | 40 | 17 | 44 | 16 | 40 | 16.4 |
- 通知機能は、macOS Ventura以降で利用可能です。
- ホーム画面に保存されたWebアプリでは、通知機能が利用可能です。
- `notifications` 権限の別名(同じ値を返す)。
- 通知機能は、macOS Ventura以降で利用可能です。
- ホーム画面に保存されたWebアプリでは、通知機能が利用可能です。
- 通知機能は、macOS Ventura以降で利用可能です。
- ホーム画面に保存されたWebアプリでは、通知機能が利用可能です。
- 通知機能は、macOS Ventura以降で利用可能です。
- ホーム画面に保存されたWebアプリでは、通知機能が利用可能です。
- 通知機能は、macOS Ventura以降で利用可能です。
- ホーム画面に保存されたWebアプリでは、通知機能が利用可能です。
- 通知機能は、macOS Ventura以降で利用可能です。
- ホーム画面に保存されたWebアプリでは、通知機能が利用可能です。
- `applicationServerKey` を値とする `options` パラメータは必須です。
- `applicationServerKey` を値とする `options` パラメータは必須です。
- Firefox 72以降では、`click`イベントなどのユーザー操作に応じてのみ呼び出すことができます。
- 通知機能は、macOS Ventura以降で利用可能です。
- `applicationServerKey` を値とする `options` パラメータは必須です。
- ホーム画面に保存されたWebアプリでは、通知機能が利用可能です。
- 通知機能は、macOS Ventura以降で利用可能です。
- ホーム画面に保存されたWebアプリでは、通知機能が利用可能です。
- 通知機能は、macOS Ventura以降で利用可能です。
- ホーム画面に保存されたWebアプリでは、通知機能が利用可能です。
- 通知機能は、macOS Ventura以降で利用可能です。
- ホーム画面に保存されたWebアプリでは、通知機能が利用可能です。
- 通知機能は、macOS Ventura以降で利用可能です。
- ホーム画面に保存されたWebアプリでは、通知機能が利用可能です。
- 通知機能は、macOS Ventura以降で利用可能です。
- ホーム画面に保存されたWebアプリでは、通知機能が利用可能です。
- 通知機能は、macOS Ventura以降で利用可能です。
- ホーム画面に保存されたWebアプリでは、通知機能が利用可能です。
- 通知機能は、macOS Ventura以降で利用可能です。
- ホーム画面に保存されたWebアプリでは、通知機能が利用可能です。
- 通知機能は、macOS Ventura以降で利用可能です。
- ホーム画面に保存されたWebアプリでは、通知機能が利用可能です。
- 通知機能は、macOS Ventura以降で利用可能です。
- ホーム画面に保存されたWebアプリでは、通知機能が利用可能です。
- 通知機能は、macOS Ventura以降で利用可能です。
- ホーム画面に保存されたWebアプリでは、通知機能が利用可能です。
- 通知機能は、macOS Ventura以降で利用可能です。
- ホーム画面に保存されたWebアプリでは、通知機能が利用可能です。
- 通知機能は、macOS Ventura以降で利用可能です。
- ホーム画面に保存されたWebアプリでは、通知機能が利用可能です。
- 通知機能は、macOS Ventura以降で利用可能です。
- ホーム画面に保存されたWebアプリでは、通知機能が利用可能です。
- このバージョンで機能が削除されました (79)
- Firefox 137 以前のバージョンでは、`pushsubscriptionchange` イベントは発生しますが、`oldSubscription` および `newSubscription` プロパティは存在しません。バグ 1635524 を参照してください。
- 通知機能は、macOS Ventura以降で利用可能です。
- ホーム画面に保存されたWebアプリでは、通知機能が利用可能です。
- このバージョンで機能が削除されました (79)
- 通知機能は、macOS Ventura以降で利用可能です。
- ホーム画面に保存されたWebアプリでは、通知機能が利用可能です。
- このバージョンで機能が削除されました (79)
- 通知機能は、macOS Ventura以降で利用可能です。
- ホーム画面に保存されたWebアプリでは、通知機能が利用可能です。
- このバージョンで機能が削除されました (79)
- ホーム画面に保存されたWebアプリでは、通知機能が利用可能です。
- 通知機能は、macOS Ventura以降で利用可能です。
- ホーム画面に保存されたWebアプリでは、通知機能が利用可能です。
- 通知機能は、macOS Ventura以降で利用可能です。
- ホーム画面に保存されたWebアプリでは、通知機能が利用可能です。
- 通知機能は、macOS Ventura以降で利用可能です。
- ホーム画面に保存されたWebアプリでは、通知機能が利用可能です。
- 通知機能は、macOS Ventura以降で利用可能です。
- ホーム画面に保存されたWebアプリでは、通知機能が利用可能です。
- このバージョンで機能が削除されました (79)
- このブラウザでは部分的にしか実装されていません
- このイベントには `oldSubscription` および `newSubscription` プロパティがありません。バグ 1497429 を参照してください。
- 通知機能は、macOS Ventura以降で利用可能です。
- 通知機能は、macOS Ventura以降で利用可能です。
- ホーム画面に保存されたWebアプリでは、通知機能が利用可能です。
基本構文
self.addEventListener("push", (event) => {
if (!(self.Notification && self.Notification.permission === "granted")) {
return;
}
const data = event.data?.json() ?? {};
const title = data.title || "Something Has Happened";
const message =
data.message || "Here's something you might want to check out.";
const icon = "images/new-notification.png";
const notification = new self.Notification(title, {
body: message,
tag: "simple-push-demo-notification",
icon,
});
notification.addEventListener("click", () => {
clients.openWindow(
"https://example.blog.com/2015/03/04/something-new.html",
);
});
}); 実務での使いどころ
-
Push messages の活用
PushEvent はプッシュ API のインターフェイスで、受け取ったプッシュメッセージを表します。
注意点
- 古いブラウザでは対応していない場合がある。
実装メモ
- 一部の API はセキュアコンテキスト (HTTPS) やユーザー操作起点を必要とする。利用前に要件を確認すること。