【うぇぶぷっしゅつうち】

Web Push通知 とは?

最終更新:
💡 ブラウザがスマホアプリみたいに「ピコン!」って教えてくれる仕組みだよ

Webブラウザを通じて、ネイティブアプリがなくてもサーバーからユーザーに通知を届けられる仕組みのこと。ページを開いていないときでも受け取れる。

📌 このページのポイント
登録した宛先に、プッシュサービス経由で配信 Webサーバー 配信サービス ブラウザ 暗号化して送信 メッセージ配送 受信時に SWが処理 Service Workerから画面に通知を表示 事前に:通知の許可 → 購読 → 宛先を保存 本文の暗号化と、VAPIDの送信元識別は別 iPhone/iPadはホーム画面のWebアプリが対象 SW = Service Worker
登録後の配信の概念図。通知にはユーザーの許可が必要。対応条件や配信期限も確認する。
ひよこ ひよこ
Web Push通知って普通のプッシュ通知と何が違うの?
ペンギン先生 ペンギン先生
普通のプッシュ通知はスマホにアプリをインストールして受け取るけど、Web Push通知はブラウザやWebアプリで受け取れるんだよ。Webサイトから「通知を許可しますか?」って聞かれたことない?ただしiPhoneやiPadでは、サイトをホーム画面に追加したWebアプリだけが対象だよ。
ひよこ ひよこ
ある!あれってどういう仕組みなの?ページを閉じてても届くの?
ペンギン先生 ペンギン先生
3つの要素が連携しているよ。Push APIがサーバーからのメッセージを受け取る窓口、Service Workerがそれを処理する裏方、Notification APIが画面に通知を表示する役だね。Service Workerはずっと動き続けているわけじゃなくて、メッセージが届いたときにブラウザが起こしてくれる。だからページを開いていなくても受け取れるんだよ。
ひよこ ひよこ
でも「通知を許可しますか」ってしつこく出るサイトがあって困るんだけど…
ペンギン先生 ペンギン先生
それはブラウザ側も対策しているよ。たとえばFirefoxは72から、クリックなどのユーザー操作がない許可要求をアドレスバーの小さなアイコン表示にとどめている。Chromeにも許可要求を目立たなく表示する設定や、迷惑な通知を出すサイトの通知を自動でブロックする仕組みがあるんだ。
ひよこ ひよこ
サーバー側はどうやって通知を送るの?
ペンギン先生 ペンギン先生
ユーザーが許可すると、ブラウザが送り先URL(エンドポイント)と暗号化用の鍵をまとめた「サブスクリプション情報」を作るよ。サーバーはそれを保存しておいて、通知したいときにそのURL、つまりブラウザごとのプッシュサービスにリクエストを送る。端末がオフラインなら、プッシュサービスは指定された有効期限(TTL)の間メッセージを預かって、つながったときに届けられるんだ。
ひよこ ひよこ
途中のプッシュサービスに中身を見られたりしないの?
ペンギン先生 ペンギン先生
本文はブラウザが発行した公開鍵と認証用の秘密値を使って暗号化されるから、プッシュサービスは中身を読めないよ(RFC 8291)。よく一緒に出てくるVAPIDは暗号化の仕組みじゃなくて、送り主のアプリケーションサーバーが署名付きトークンで自分を名乗る仕組み(RFC 8292)なんだ。サブスクリプション情報(エンドポイントURLと鍵)は、他人に渡らないよう安全に保管することも大事だね。
もっと詳しく知りたい人へ

iPhoneでもWeb Push通知は受け取れる?

iOS・iPadOS 16.4以降なら受け取れるが、Webサイトをホーム画面に追加したWebアプリであることが条件だよ。Safariでページを開いているだけでは対象外。さらに通知の許可は「購読する」ボタンを押したときなど、ユーザーの操作に応じて求める必要がある。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Web Push通知」って出てきたら「ブラウザ経由でアプリなしでも届くプッシュ通知」と思えればだいたいOK!
📖 おまけ:英語の意味
「Web Push Notification」 = Web経由のプッシュ通知
💬 Push(押す)の名前のとおり、サーバーからユーザーに向けて情報を「押し出す」仕組みだよ

参考資料

← 用語集にもどる