前言
Notification API 是 HTML5 新增的桌面通知 API,用于向用戶顯示通知信息。該通知是脫離瀏覽器的丑勤,即使用戶沒有停留在當(dāng)前標(biāo)簽頁,甚至最小化了瀏覽器吧趣,該通知信息也一樣會(huì)置頂顯示出來法竞。
用戶權(quán)限
想要向用戶顯示通知消息,需要獲取用戶權(quán)限强挫,而相同的域名只需要獲取一次權(quán)限岔霸。只有用戶允許的權(quán)限下,Notification 才能起到作用俯渤,避免某些網(wǎng)站的廣告濫用 Notification 或其它給用戶造成影響呆细。那么如何知道用戶到底是允不允許的?
Notification.permission 該屬性用于表明當(dāng)前通知顯示的授權(quán)狀態(tài)八匠,可能的值包括:
default :不知道用戶的選擇絮爷,默認(rèn)趴酣。
granted :用戶允許。
denied :用戶拒絕坑夯。
if(Notification.permission === 'granted'){
console.log('用戶允許通知');
}else if(Notification.permission === 'denied'){
console.log('用戶拒絕通知');
}else{
console.log('用戶還沒選擇岖寞,去向用戶申請(qǐng)權(quán)限吧');
}
推送通知
獲取用戶授權(quán)之后,就可以推送通知了柜蜈。
var notification = new Notification(title, options)
參數(shù)如下:
title:通知的標(biāo)題
options:通知的設(shè)置選項(xiàng)(可選)慎璧。
body:通知的內(nèi)容。
tag:代表通知的一個(gè)識(shí)別標(biāo)簽跨释,相同tag時(shí)只會(huì)打開同一個(gè)通知窗口胸私。
icon:要在通知中顯示的圖標(biāo)的URL。
image:要在通知中顯示的圖像的URL鳖谈。
data:想要和通知關(guān)聯(lián)的任務(wù)類型的數(shù)據(jù)岁疼。
requireInteraction:通知保持有效不自動(dòng)關(guān)閉,默認(rèn)為false缆娃。
還有一些其他的參數(shù)捷绒,因?yàn)橛貌涣嘶蛘邲]什么用這里就沒必要說了。
var n = new Notification('狀態(tài)更新提醒',{
body: '你的朋友圈有3條新狀態(tài)贯要,快去查看吧',
tag: 'linxin',
icon: 'http://blog.gdfengshuo.com/images/avatar.jpg',
requireInteraction: true
})
關(guān)閉通知
從上面的參數(shù)可以看出暖侨,并沒有一個(gè)參數(shù)用來配置顯示時(shí)長的。我想要它 3s 后自動(dòng)關(guān)閉的話崇渗,這時(shí)可以調(diào)用 close() 方法來關(guān)閉通知字逗。
var n = new Notification('狀態(tài)更新提醒',{
body: '你的朋友圈有3條新狀態(tài),快去查看吧'
})
setTimeout(function() {
n.close();
}, 3000);