/
aprogrammer
/
blazor-workshop
Обзор
Документация
Войти
/
aprogrammer
/
blazor-workshop
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
save-points/07-javascript-interop/BlazingPizza.ComponentsLibrary/wwwroot/pushNotifications.js
46 строк
2 KB
Steve Sanderson
PWA chapter (#160)
14 окт 2019, 03:25
Не верифицирован
14 окт 2019, 03:25
4f8b3b6
Код
Авторство
О чём код?
(function () { // Note: Replace with your own key pair before deploying const applicationServerPublicKey = 'BLC8GOevpcpjQiLkO7JmVClQjycvTCYWm6Cq_a7wJZlstGTVZvwGFFHMYfXt6Njyvgx_GlXJeo5cSiZ1y4JOx1o'; window.blazorPushNotifications = { requestSubscription: async () => { const worker = await navigator.serviceWorker.getRegistration(); const existingSubscription = await worker.pushManager.getSubscription(); if (!existingSubscription) { const newSubscription = await subscribe(worker); if (newSubscription) { return { url: newSubscription.endpoint, p256dh: arrayBufferToBase64(newSubscription.getKey('p256dh')), auth: arrayBufferToBase64(newSubscription.getKey('auth')) }; } } } }; async function subscribe(worker) { try { return await worker.pushManager.subscribe({ userVisibleOnly: true, applicationServerKey: applicationServerPublicKey }); } catch (error) { if (error.name === 'NotAllowedError') { return null; } throw error; } } function arrayBufferToBase64(buffer) { // https://stackoverflow.com/a/9458996 var binary = ''; var bytes = new Uint8Array(buffer); var len = bytes.byteLength; for (var i = 0; i < len; i++) { binary += String.fromCharCode(bytes[i]); } return window.btoa(binary); } })();