这篇翻译不完整。请帮忙从英语翻译这篇文章。
通知接口(the Notifications API)允许网页来控制显示给用户的通知 ——这些通知会出现在用户浏览窗口的最顶层,因此甚至可以在用户切换了标签页或者切换到其他应用后仍能显示。该接口的设计能够与现有的通知系统在不同的平台上兼容。
概念和使用方法
在支持该接口的平台上,显示一个通知一般需要做两件事。第一,用户需要授予当前来源(网站)的权限来显示系统通知,这一步一般在应用或者网站初始化时就完成了,使用Notification.requestPermission()
方法。这会引起一个对话框,如下图所示:
这里,用户可以选择同意或者禁用当前来源(网站)的通知权限,或者不做出选择。一旦做出了选择,那么这个选择会在当前会话中保持。
注:从Firefox 44开始, 通知(Notifications) 和推送(Push)的权限合并到了一起。如果通知的权限被允许了,那么推送的权限也同时被允许了。
第二, 一个新的通知将会使用 Notification()
构造方法被构造出来。这个方法可以传入两个参数。第一个参数是必须的,为通知的标题;第二个是可选的,是一个包含其他配置(例如:文字方向、通知内容、要展示的图标、通知的声音等等)的字面量对象。
另外,通知接口(the Notifications API )的官方文档具体规定了一些附加参数(additions)在 ServiceWorker API 中,让service worker去触发通知。
注:想了解怎么在你的应用里使用通知接口,请阅读 Using the Notifications API。
接口(Notifications interfaces)
Notification
- 定义的通知对象
附加参数(Service worker additions)
ServiceWorkerRegistration
- 该对象包含
ServiceWorkerRegistration.showNotification()
和ServiceWorkerRegistration.getNotifications()
方法,用于控制通知的显示。 ServiceWorkerGlobalScope
- 该对象包含
ServiceWorkerGlobalScope.onnotificationclick
事件处理函数,用于通知被点击的时候触发绑定的事件处理函数。 NotificationEvent
- 该对象是功能明确的事件对象,表示一个通知事件被触发了,继承自
ExtendableEvent
。
官方文档
Specification | Status | Comment |
---|---|---|
Notifications API | Living Standard | Living standard |
浏览器兼容性
Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Basic support | 5webkit[1] 22 |
4.0 (2.0)moz[2] 22.0 (22.0) |
未实现 | 25 | 6[3] |
Available in workers | ? | 41.0 (41.0) | ? | ? | ? |
Service worker additions |
42.0 |
42.0 (42.0)[4] | ? | ? | ? |
Feature | Android | Android Webview | Firefox Mobile (Gecko) | Firefox OS | IE Mobile | Opera Mobile | Safari Mobile | Chrome for Android |
---|---|---|---|---|---|---|---|---|
Basic support | ? |
(Yes) |
4.0 (2.0)moz[2] 22.0 (22.0) |
1.0.1moz[2] 1.2 |
未实现 | ? | 未实现 |
(Yes) |
Available in workers | ? | ? | 41.0 (41.0) | (Yes) | ? | ? | ? | ? |
Service worker additions | 未实现 | 未实现 | 42.0 (42.0)[4] | (Yes) | ? | ? | ? | 42.0 |
[1] 在 Chrome 22 之前, 通知接口遵守一个旧版本的提案(an old prefixed version of the specification )使用一个包含前缀符的navigator.webkitNotifications
对象来实例化一个通知对象。 在 Chrome 32之前, Notification.permission
属性不支持。
[2] 在 Firefox 22 (Firefox OS <1.2)之前,通知对象的实例化需要使用navigator.mozNotification
对象的 createNotification()
方法。另外,通知对象需要使用 show()
方法来显示,并且仅支持 click
和 close
事件 (Nick Desaulniers 写了一个通知的兼容解决方法( a Notification shim )来覆盖旧浏览器和现代浏览器。)
[3] Safari 从Safari 6开始支持通知,但只在 Mac OSX 10.8+ (Mountain Lion)上。
[4] Firefox 42 has shipped with web notifications from Service Workers disabled.
Firefox OS permissions
当你在 Firefox OS app中使用通知时,请确保在manifest文件中添加了desktop-notification
权限 。 Notifications can be used at any permission level, hosted or above:
"permissions": { "desktop-notification": {} }