1、介绍
Notification 是H5新增的桌面通知API,用于向用户通知信息,即使用户没有停留在当前标签页,甚至是最小化了浏览器,该通知信息也会置顶显示出来。
2、用户权限
需要获取到用户权限后才能向用户显示。
Notification.permission 该属性用户表明当前通知显示的授权状态,值包括:
-
default: 不知道用户的选择,默认。
-
granted: 用户允许。
-
denied: 用户拒绝。
if(Notification.permission === 'granted'){
console.log('用户允许通知');
}else if(Notification.permission === 'denied'){
console.log('用户拒绝通知');
}else{
console.log('用户还没选择,去向用户申请权限吧');
}
3、请求权限
当不知道用户选择时,我们需要向用户请求权限。Notification提供了requestPermission() 方法请求用户当前来源的权限以显示通知。
Notification.requestPermission().then(permission => {
if(permission === 'granted'){
console.log('用户允许通知');
}else if(permission === 'denied'){
console.log('用户拒绝通知');
}
})
4、推送通知
当获取用户权限后就可以推送通知了。
var notification = new Notification(title, options);
- title: 要显示的标题
- options: 通知的设置选项(可选)
- body: 通知的内容。
- tag: 代表通知的一个识别标签,相同tag时只会打开同一个通知窗口。
- icon:要在通知中显示的图标的URL。
- image: 要在通知中显示的图片的URL。
- data:想要和通知关联的任务类型的数据。
- requireInteration: 通知保持有效不自动关闭,默认为false。
var notification = new Notification(NOTIFICATION_TITLE, {
body: NOTIFICATION_BODY,
icon: 'http://img18.house365.com/newcms/2017/03/16/148964317858ca26aacf7b5.jpg',
data: {
url: 'https://www.baidu.com/'
}
requireInteraction: true, // 不自动关闭通知
})
5、关闭通知
获取notification实例后,调用.close();
6、事件触发及data方法获取
var notification = new Notification(NOTIFICATION_TITLE, {
body: NOTIFICATION_BODY,
icon: 'http://img18.house365.com/newcms/2017/03/16/148964317858ca26aacf7b5.jpg',
requireInteraction: true, // 不自动关闭通知
data: {
url: 'https://www.baidu.com/'
}
}).onclick = () => {
window.open(notification.data.url, '_blank');
notification.close();
}
7、兼容
不兼容IE,其他的PC端浏览器几乎全支持。
移动端浏览器不支持。
8、显示
这里以mac为例


9、应用场景
消息推送