Notification
对象上的静态方法Notification.requestPermission()
来获取授权。由于Notification.requestPermission()
在某些版本浏览器中会接收一个回调函数(Notification.requestPermission(callback)
)作为参数,而在另一些浏览器版本中会返回一个promise,因此将该方法进行包装,统一为promise调用:askPermission()
方法来统一Notification.requestPermission()
的调用形式,并在Service Worker注册完成后调用该方法。调用Notification.requestPermission()
获取的permissionResult
可能的值为:chrome://settings/content/notifications
里进行通知的设置与管理。registration.showNotification()
方法进行消息提醒了。then
方法的回调函数会接收一个registration
参数,通过调用其上的showNotification()
方法即可触发提醒:registration.showNotification()
方法来显示消息提醒,该方法接收两个参数:title
与option
。title
用来设置该提醒的主标题,option
中则包含了一些其他设置。注意,由于不同浏览器中,对于option
属性的支持情况并不相同。部分属性在一些浏览器中并不支持。
notificationclick
事件。在该事件的回调函数中我们可以获取点击的相关信息:e.action
获取的值,就是我们在showNotification()
中定义的actions里的action。因此,通过e.action
就可以知道用户点击了哪一个操作选项。注意,当用户点击提醒本身时,也会触发notificationclick
,但是不包含任何action值,所以在代码中将其置于default默认操作中。postMessage()
方法来通知client:message
事件,判断data
,进行不同的操作:notificationclick
监听中,将action通过postMessage()
通信给client;然后在client中监听message
事件,基于action(e.data
)来进行不同的操作(跳转到图书详情页/发送邮件/显示简介面板)。registration.showNotification()
方法,而是需要创建一个Notification对象。