Notification
意旨推播,在手機上就是常出現的訊息通知,
推播可以在裝置沒有開啟網頁的情況下,從網頁或從伺服器端推訊息給使用者,
可以藉由此功能,提升使用者回顧網站的機率。
Push Notification
由兩個API組成:Notification API
- 設定網站要顯示給使用者的通知內容。Push API
-允許Service Worker
處理來自伺服器的推播訊息。
這兩個API都是建立在Service Worker API
上
進入網站時,網站會詢問使用者是否允許通知,如果使用者允許,才有戲唱
假設點選允許後,接著可以將使用者的回應,透過Service Worker
將訂閱紀錄儲存起來,
接著在伺服器測試發推播的時候,透過Push API
可以接收到推播訊息並傳給使用者。
現在來寫一個按鈕,簡單觸發推播允許的事件。
建立一個按鈕class="enable-notifications"
,按鈕預設隱藏,如果瀏覽器支援推播
才顯示按鈕,接著移動到app.js
var enableNotifications = document.querySelectorAll('.enable-notifications');
抓取按鈕的元素
if ('Notification' in window) {
for (var i= 0; i < enableNotifications.length; i++) {
enableNotifications[i].style.display = 'inline-block';
enableNotifications[i].addEventListener('click', askForNotificationPermission);
}
}
判斷window
中,是否支援Notification
,支援就顯示按鈕,並加入click
事件。
function askForNotificationPermission() {
Notification.requestPermission(function(status){
console.log('User Choice', status);
if (status !== 'granted') {
console.log('推播允許被拒絕了!');
} else {
}
});
}
事件中,透過Notification.requestPermission
發出請求,
觸發訊息窗詢問使用者是否想要訂閱,
如果使用者點選「允許」則status = granted
點選「封鎖」則status = denied
接續,開始深入推播的程式囉~
https://github.com/DakHarry/30day-pwas-practice