Html5中的桌面通知Notification的實(shí)現(xiàn)

前言:對于一個(gè)前段開發(fā)者,逛網(wǎng)頁總會留意一些新奇的功能,對于上班總會用到Teambition的我,總是能收到Notification...所以今天就來研究下這個(gè)H5功能...
1. 實(shí)例一個(gè)Notification
let n = new Notification( "這是一個(gè)通知消息", //這是必選Title 一定會顯示的通知標(biāo)題 { icon: "xxx.png", // 這個(gè)icon是用來顯示通知中的左邊圖片 body: "你好啊,我是xxx", // 通知中的內(nèi)容字符 dir: auto, // 文字的方向 值包含: auto(自動), ltr(從左到右), rtl(從右向左) tag: "gxlself" // 給與這個(gè)通知消息一個(gè)ID, 用來對這個(gè)通知消息進(jìn)行 刷新.移除.替換 等操作 // long: "en-US" //lang字段 需要參考https://tools.ietf.org/html/bcp47 并不是必須 沒看出啥作用... // ... // 其余可選屬性見下實(shí)例屬性 } )
訪問對應(yīng)的實(shí)例屬性:
n.actions // 一個(gè)只讀的NotificationAction對象數(shù)組。每一個(gè)對象描述用戶可以在一個(gè)通知中選擇的單個(gè)操作。
n.image // 通知的一部分顯示的圖像的URL
n.badge // 當(dāng)沒有足夠的空間顯示通知本身時(shí),用于表示通知的圖像的URL。
n.permission // 有三個(gè)值 granted
, denied
, 或default 當(dāng)狀態(tài)值為granted時(shí)可以發(fā)送通知消息 default默認(rèn)用戶沒處理 denied 用戶拒絕
n.renotify // 布爾值。新通知出現(xiàn)的時(shí)候是否替換之前的。如果設(shè)為true,則表示替換,表示當(dāng)前標(biāo)記的通知只會出現(xiàn)一個(gè)。注意這里的“當(dāng)前標(biāo)記”沒?沒錯(cuò),true
參數(shù)要想起作用,tag必須
需要設(shè)置屬性值。
n.requireInteraction // 布爾值, 指的是通知是否保持活動直到用戶點(diǎn)擊或取消通知 而不是自動關(guān)閉..
n.silent // 布爾值。通知出現(xiàn)的時(shí)候,是否要有聲音。默認(rèn)false
, 表示無聲。
n.timestamp //通知?jiǎng)?chuàng)建或者可以使用的時(shí)間。
n.data // 任意類型和通知相關(guān)聯(lián)的數(shù)據(jù)。
n.vibrate // 通知顯示時(shí)候,設(shè)備震動硬件需要的震動模式。所謂振動模式,指的是一個(gè)描述交替時(shí)間的數(shù)組,分別表示振動和不振動的毫秒數(shù),一直交替下去。例如[200, 100, 200]表示設(shè)備振動200毫秒,然后停止100毫秒,再振動200毫秒。 (移動端)
n.sound // 字符串。音頻地址。表示通知出現(xiàn)要播放的聲音資源。
n.sticky // 通知吸附不容易被清除... (移動端)
n.noscreen // 布爾值。是否不再屏幕上顯示通知信息。默認(rèn)false
, 表示要在屏幕上顯示通知內(nèi)容。(移動端)
此時(shí)實(shí)例 n 有四個(gè)事件處理:
1> onclick 用戶對通知信息的點(diǎn)擊事件
2> onshow 通知消息展示之后觸發(fā)的事件
3> onerror 遇到錯(cuò)誤會觸發(fā)的事件
4> onclose close事件的處理
2. Notification對象會有什么屬性/方法呢?利用控制臺中的window對象輸出點(diǎn)開查看就可以看到:
值得注意的是: requestPermission()方法僅在Notification對象有效,實(shí)例對象無效!!!這個(gè)方法是用來向用戶申請顯示通知的權(quán)限,只能被用戶主動去調(diào)用(在頁面onload中可以調(diào)用,可以向用戶申請,之后再去發(fā)送...)
實(shí)例對象擁有的方法有:
(1). close() 用于關(guān)閉通知消息 --> 也可以在onshow方法加延遲調(diào)用,提高用戶體驗(yàn)感...
(2). addEventListener() 監(jiān)聽事件(這個(gè)通用方法)
(3). removeEventListener 卸載監(jiān)聽事件(通用,同上)
(4). dispatchEvent 分派事件(同上)
接下來,寫一個(gè)js測試, 如果使用的是谷歌瀏覽器,建議在設(shè)置中顯示通知將本地服務(wù)地址加入允許通知
但是,http的域名在谷歌瀏覽器被默認(rèn)關(guān)閉,還不允許更改,查看谷歌瀏覽器控制臺有警告信息--->
index.js:78 [Deprecation] The Notification API may no longer be used from insecure origins. You should consider switching your application to a secure origin, such as HTTPS. See https://goo.gl/rStTGz for more details.
嗯,好吧,讓加https證書,真的是有毒...雖然在自己的主頁中添加該功能也只能在火狐瀏覽器爽一爽....
(騰訊云有免費(fèi)一年的ssl證書,可自己進(jìn)行安裝...)
// index.js window.onload = function(){ let gxlself = new Gxlself() gxlself.requestPermission() setTimeout(()=>{ gxlself.showNotification() },3000) } class Gxlself{ constructor(){ this.isNotificationSupported = "Notification" in window; } isPermissionGranted(){ return Notification.permission === 'granted'; } requestPermission(){ if(!this.isNotificationSupported){ return; } Notification.requestPermission(status=>{ let permission = Notification.permission; }) } showNotification(){ if (!this.isNotificationSupported) { return; } if (!this.isPermissionGranted()) { return; } var n = new Notification("gxlself對您發(fā)來問候", { icon : 'gxlself.png', body : '歡迎來訪,鄙人萬分感激! 點(diǎn)擊即可跳轉(zhuǎn)至我的博客頁面~' }); n.onshow = function () { console.log('gxlself已經(jīng)發(fā)送通知信息'); setTimeout(function() { n.close(); }, 5000); } n.onclick = function () { location. n.close() } n.onerror = function (err) { console.log(err) } n.onclose = function () { console.log('gxlself消息窗口關(guān)閉') } } }
這是火狐瀏覽器執(zhí)行后的效果展示:
再來看看谷歌本地跑的效果:(域名已經(jīng)被默認(rèn)攔截關(guān)閉,上面已經(jīng)說明,不再重復(fù))
谷歌的效果其實(shí)挺好看的,嗯...只是一個(gè)https把我給屏蔽了 哎...
------- 桌面版應(yīng)用 -----------
當(dāng)你要在開放 web 應(yīng)用中使用通知時(shí),請確保將 desktop-notification
權(quán)限添加到你的 manifest 文件中。通知可以被用于任何權(quán)限級別,hosted 或更高。
"permissions": { "desktop-notification":{} }
這個(gè)Notification比較好玩,也是未來發(fā)送消息的一個(gè)重要的一塊,留此記錄...希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
- 這篇文章主要介紹了HTML5實(shí)現(xiàn)桌面通知 提示功能,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧2017-10-11
HTML5實(shí)現(xiàn)Notification API桌面通知功能
Notification生成的消息不依附于某個(gè)頁面,僅僅依附于瀏覽器。 下面通過本文給大家介紹HTML5實(shí)現(xiàn)Notification API桌面通知功能,需要的朋友參考下吧2016-03-02html5桌面通知(Web Notifications)實(shí)例解析
這篇文章主要為大家介紹了html5桌面通知(Web Notifications)實(shí)例,對于進(jìn)行html5網(wǎng)站建設(shè)非常有用!需要的朋友可以參考下2014-07-07突襲HTML5之Javascript API擴(kuò)展5—其他擴(kuò)展(應(yīng)用緩存/服務(wù)端消息/桌面
前面已經(jīng)總結(jié)了主要的API擴(kuò)展(應(yīng)用緩存/服務(wù)端消息/桌面通知),下面的幾個(gè)只有在特定的場合才能發(fā)揮它的潛質(zhì),無一例外,IE均不支持,桌面通知目前只有Chrome支持,感興趣的朋2013-01-31HTML5中的Web Notification桌面通知功能的實(shí)現(xiàn)方法
這篇文章主要介紹了HTML5中的Web Notification桌面通知功能的實(shí)現(xiàn)方法,需要的朋友可以參考下2019-07-29