-
Notifications
You must be signed in to change notification settings - Fork 2
/
sw.js
39 lines (32 loc) · 1.18 KB
/
sw.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
importScripts('https://unpkg.com/@gauntface/logger@3.0.13/build/browser-globals.js')
logger.setPrefix('web-push-study/service worker')
self.addEventListener('install', () => {
self.skipWaiting()
})
self.addEventListener('push', function (event) {
const options = {
...{
title: 'Hello',
body: 'Thanks for sending this push msg.',
icon: 'https://simple-push-demo.vercel.app/images/logo-192x192.png',
badge: 'https://simple-push-demo.vercel.app/images/badge-72x72.png',
tag: 'web-push-study-notification',
data: {
url: 'https://web.dev/push-notifications-overview/',
},
}, ...event.data.json()
}
logger.log('Push message received.', options)
event.waitUntil(self.registration.showNotification(options.title, options))
})
self.addEventListener('notificationclick', function (event) {
logger.log('Notification clicked.', event)
event.notification.close()
let clickResponsePromise = Promise.resolve()
if (event.action) {
clickResponsePromise = clients.openWindow(event.action)
} else if (event.notification.data && event.notification.data.url) {
clickResponsePromise = clients.openWindow(event.notification.data.url)
}
event.waitUntil(clickResponsePromise)
})