Notification Triggers 支持情况
发布于
Notification Triggers 是为 ServiceWorkerRegistration.showNotification()
提出的一个 showTrigger 选项,允许页面通过 TimestampTrigger 指定未来某个
时间来调度通知的显示,且触发时页面或 Service Worker 无需处于运行状态。
浏览器与生态支持
Section titled “浏览器与生态支持”- 图例
- 支持
- 部分支持
- 需开启标志
- 不支持
- 未知
| 浏览器 / 平台 | 支持 | 版本 | 置信度 | 来源 | 备注 |
|---|---|---|---|---|---|
| Chrome (Desktop) | 不支持 | — | 中 | 来源 | 12 |
- 从未在 Chrome 中发布:Chrome Platform Status 显示,该特性在完成说明文档和两轮 origin trial(Chrome 80-83 与 86-88)后,发布里程碑仍为「Not started」;Chrome 自己的文档确认开发已结束。
- 本行来源于 Chrome 自己的状态页,仅证明 Chrome 的状态,不对其他浏览器引擎作任何断言。
根据其说明文档提出的形态,传入 showTrigger 选项,并配合设为目标投递时间的
TimestampTrigger:
async function scheduleNotification(registration, whenMs, options) { return registration.showNotification('Reminder', { ...options, showTrigger: new TimestampTrigger(whenMs), });}如何在运行时检测
Section titled “如何在运行时检测”文档记载的检测方式是判断 Notification.prototype 上是否存在 showTrigger。
由于 Chrome 的官方文档表明该功能的开发已终止,请将此检测结果视为不可靠,并
始终实现下面的回退分支:
function scheduleWithFallback(registration, whenMs, options) { if ('showTrigger' in Notification.prototype) { return registration.showNotification('Reminder', { ...options, showTrigger: new TimestampTrigger(whenMs), }); } // 回退方案:改由服务器驱动的推送消息来处理调度。 return requestServerScheduledPush(whenMs, options);}- Chrome 的官方文档表明该功能的开发已终止,因此不要依赖
showTrigger可用—— 应始终实现并实际执行上方的回退分支。 - 根据该文档,给出的原因是尚未解决如何在不依赖标签页保持打开的情况下,清理 过期或已失效的已调度通知(例如被取消的日历事件)这一需求;该说明文档还指出, Push API 与 Periodic Background Sync 均被考虑过,但被认为无法满足这一具体 需求。
- 由于该 API 从未进入正式可用阶段,请勿假设未来某个浏览器版本会添加它,使用前 应先查阅当前的 MDN 或 Chrome 状态文档。
← 返回兼容性浏览器。