Notifications API - 允许网页控制向终端用户显示的系统通知

注意: 此特性在 Web Worker 中可用。

安全上下文
该功能仅在部分或所有支持的浏览器中的安全上下文(HTTPS)中可用。

Notifications API(通知 API)允许网页控制向终端用户显示的系统通知。这些通知位于顶级浏览上下文视口之外,因此即使用户切换选项卡或移动到不同的应用程序也可以显示。API 旨在与现有通知系统兼容,以及跨平台。

概念和用法

在支持的平台上,显示系统通知通常涉及两件事。首先,用户需要授予当前源显示系统通知的权限,这通常在应用程序或站点初始化时完成,使用 Notification.requestPermission() 方法。它应该响应用户手势来完成,例如单击按钮,例如:

btn.addEventListener('click', function() {
  let promise = Notification.requestPermission();
  // 等待许可
})

这不仅是最佳实践 —— 你不应该用他们不同意的通知向用户发送垃圾信息 —— 而且浏览器将明确禁止未响应用户手势触发的通知。例如,Firefox 已经从 72 版开始这样做。

这将生成一个请求对话框,如下所示:

从这里,用户可以选择允许来自该来源的通知,或阻止它们。一旦做出选择,该设置通常会在当前会话中持续存在。

注意: 从 Firefox 44 开始,通知和 Push 的权限已合并。如果授予通知权限,也将启用推送。

接下来,使用 Notification() 构造函数创建一个新通知。它必须传递一个标题参数,并且可以选择传递一个选项对象来指定选项,例如文本方向、正文、要显示的图标、要播放的通知声音等。

此外,通知 API 规范为 ServiceWorker API 指定了许多附加内容,以允许服务工作线程触发通知。

注意: 要了解有关在您自己的应用程序中使用通知的更多信息,请阅读 使用通知 API

通知接口

Notification

定义一个通知对象。

服务工作线程扩展

ServiceWorkerRegistration

包括 ServiceWorkerRegistration.showNotification()ServiceWorkerRegistration.getNotifications() 方法,用于控制显示通知。

ServiceWorkerGlobalScope

包括 ServiceWorkerGlobalScope.onnotificationclick 处理程序,用于在单击通知时触发自定义函数。

NotificationEvent

一种特定类型的事件对象,基于 ExtendableEvent,表示已触发的通知。

规范

规范
Notifications API Living Standard

{{Compat("api.Notification")}}

相关链接