推送 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 表格仅在浏览器中加载

另请参阅