Pwa Push Notifications

PWA Push Notifications

ComeOnOliver Updated 61 repo stars

File contents

PWA Push Notifications

Subscribe

const reg = await navigator.serviceWorker.ready;
const sub = await reg.pushManager.subscribe({
    userVisibleOnly: true,
    applicationServerKey: urlBase64ToUint8Array(VAPID_PUBLIC_KEY),
});
await fetch('/api/push/subscribe', { method: 'POST', body: JSON.stringify(sub) });

Service Worker Handler

self.addEventListener('push', (e) => {
    const data = e.data?.json() ?? { title: 'Update', body: 'New content' };
    e.waitUntil(self.registration.showNotification(data.title, {
        body: data.body, icon: '/icon-192.png', data: { url: data.url || '/' },
    }));
});
self.addEventListener('notificationclick', (e) => {
    e.notification.close();
    e.waitUntil(clients.openWindow(e.notification.data.url));
});

Server (web-push)

import webpush from 'web-push';
webpush.setVapidDetails('mailto:admin@app.com', PUBLIC_KEY, PRIVATE_KEY);
await webpush.sendNotification(subscription, JSON.stringify(payload));

ComeOnOliver/skillshub/tree/main/skills/skillshub-team/catalog-batch5/pwa-push-notifications commit dfbd10f48d

Frequently asked questions

npx skillmds@latest add comeonoliver/pwa-push-notifications