Web 推送通知(Web Push Notifications)
字数 878 2025-11-21 06:55:10
Web 推送通知(Web Push Notifications)
-
基础概念
Web 推送通知是一种允许网站向用户设备(包括桌面和移动端)发送即时消息的技术,即使用户未主动访问该网站。它基于服务工作者(Service Worker) 和推送 API(Push API) 实现,通过浏览器与推送服务交互来传递消息。例如,新闻网站可以在突发新闻发生时主动向订阅用户发送通知。 -
技术架构与核心组件
- 服务工作者:作为后台运行的脚本,负责接收推送消息并控制通知的显示。
- 推送服务:由浏览器厂商提供的中间服务(如 Chrome 的 FCM/Firebase Cloud Messaging),管理消息的路由。网站需将消息发送至推送服务,再由推送服务转发至用户浏览器。
- 用户授权:网站必须显式请求用户授权(通过
Notification.requestPermission()),获得许可后才能发送通知。
- 消息传递流程
- 订阅:用户授权后,网站通过
PushManager.subscribe()生成唯一的端点 URL(Endpoint) 和加密密钥。端点 URL 对应推送服务中的用户设备地址。 - 发送消息:服务器将通知内容(如 JSON 数据)通过 HTTP POST 请求发送至端点 URL,推送服务验证请求后中继消息。
- 触发通知:服务工作者监听
push事件,解析消息后调用showNotification()在设备上显示通知。用户点击通知可跳转至指定页面。
-
数据安全与加密
为确保隐私,推送内容必须使用 VAPID(Voluntary Application Server Identification) 协议进行加密。服务器需生成一对公私钥,公钥用于订阅时验证身份,私钥用于签名推送请求,防止未授权方冒充网站发送消息。 -
实际应用与优化
- 支持离线通知:服务工作者可缓存消息并在设备联网后显示。
- 个性化设置:允许用户选择通知类型(如“仅重要提醒”)。
- 性能考虑:需控制通知频率,避免过度打扰用户导致权限被撤销。