· 5 years ago · Jun 17, 2020, 08:58 PM
1// Periksa fitur Notification API
2
3
4function urlBase64ToUint8Array(base64String) {
5 const padding = '='.repeat((4 - base64String.length % 4) % 4);
6 const base64 = (base64String + padding)
7 .replace(/-/g, '+')
8 .replace(/_/g, '/');
9 const rawData = window.atob(base64);
10 const outputArray = new Uint8Array(rawData.length);
11 for (let i = 0; i < rawData.length; ++i) {
12 outputArray[i] = rawData.charCodeAt(i);
13 }
14 return outputArray;
15}
16
17
18function requestPermission() {
19 if ('Notification' in window) {
20 Notification.requestPermission().then(function (result) {
21 if (result === "denied") {
22 console.log("Fitur notifikasi tidak diijinkan.");
23 return;
24 } else if (result === "default") {
25 console.error("Pengguna menutup kotak dialog permintaan ijin.");
26 return;
27 }
28
29 if (('PushManager' in window)) {
30 navigator.serviceWorker.getRegistration().then(function (registration) {
31 registration.pushManager.subscribe({
32 userVisibleOnly: true,
33 applicationServerKey: urlBase64ToUint8Array("BLB4FHSPpRGMMpM4huueb-2a_c7IzF8l6AgaZ_T-dODnC794xnAOATiyoHRUchNxvwDESiB8cAmmllqCDx3BFlo")
34 }).then(function (subscribe) {
35 console.log('Berhasil melakukan subscribe dengan endpoint: ', subscribe.endpoint);
36 console.log('Berhasil melakukan subscribe dengan p256dh key: ', btoa(String.fromCharCode.apply(
37 null, new Uint8Array(subscribe.getKey('p256dh')))));
38 console.log('Berhasil melakukan subscribe dengan auth key: ', btoa(String.fromCharCode.apply(
39 null, new Uint8Array(subscribe.getKey('auth')))));
40 }).catch(function (e) {
41 console.error('Tidak dapat melakukan subscribe ', e.message);
42 });
43 });
44 }
45 });
46 }
47}