推送 API
注意:此功能在 Web 工作者 中可用。
推送 API 使 Web 应用程序能够接收从服务器推送到它们的邮件,无论 Web 应用程序是否处于前台,甚至是否当前加载在用户代理上。这使开发人员能够向选择加入的用户提供异步通知和更新,从而带来及时的最新内容,提高用户参与度。
推送概念和用法
警告:在实施 PushManager 订阅时,保护应用程序免受 CSRF/XSRF 问题至关重要。有关更多信息,请参阅以下文章
要使应用程序接收推送邮件,它必须具有活动 服务工作者。当服务工作者处于活动状态时,它可以使用 PushManager.subscribe()
订阅推送通知。
生成的 PushSubscription
包含应用程序发送推送邮件所需的所有信息:端点和用于发送数据的加密密钥。
服务工作者将在必要时启动以处理传入的推送邮件,这些邮件将传递给 onpush
事件处理程序。这允许应用程序对接收到的推送邮件做出反应,例如,通过显示通知(使用 ServiceWorkerRegistration.showNotification()
)。
每个订阅对服务工作者都是唯一的。订阅的端点是唯一的 功能 URL:了解端点就足以向您的应用程序发送邮件。因此,端点 URL 需要保密,否则其他应用程序可能能够向您的应用程序发送推送邮件。
激活服务工作者以传递推送邮件会导致资源使用增加,特别是电池使用。不同的浏览器有不同的处理方案,目前还没有标准机制。Firefox 允许向应用程序发送有限数量的推送邮件(配额),尽管生成通知的推送邮件不受此限制。每次访问站点时,限制都会刷新。在 Chrome 中,没有限制。
接口
PushEvent
-
表示发送到 全局范围 的推送操作
ServiceWorker
。它包含从应用程序发送到PushSubscription
的信息。 PushManager
-
提供一种从第三方服务器接收通知以及请求推送通知 URL 的方式。
PushMessageData
-
提供对服务器发送的推送数据的访问,并包括用于操作接收数据的方法。
PushSubscription
-
提供订阅的 URL 端点,并允许取消订阅推送服务。
PushSubscriptionOptions
-
表示与推送订阅关联的选项。
服务工作者添加
推送 API 规范中已指定对 服务工作者 API 的以下添加,以提供使用推送邮件的入口点。它们还监控并响应推送和订阅更改事件。
ServiceWorkerRegistration.pushManager
只读-
返回对
PushManager
接口的引用,用于管理推送订阅,包括订阅、获取活动订阅以及访问推送权限状态。这是使用推送消息的入口点。 onpush
-
每当发生
push
事件时触发的事件处理程序;也就是说,每当接收到服务器推送邮件时。 onpushsubscriptionchange
-
每当发生
pushsubscriptionchange
事件时触发的事件处理程序;例如,当推送订阅已被失效或即将失效时(例如,当推送服务设置到期时间时)。
示例
Mozilla 的 服务工作者食谱 包含许多有用的推送示例。
规范
规范 |
---|
推送 API # pushevent-interface |
推送 API # pushmessagedata-interface |
浏览器兼容性
api.PushEvent
BCD 表格仅在浏览器中加载
api.PushMessageData
BCD 表格仅在浏览器中加载