-
Meet Web Push for Safari
Bring better notifications to your websites and web apps in Safari on macOS with Web Push. We'll show you how you can remotely send notifications to people through the web standards-based combination of Push API, Notifications API, and Service Workers.
Recursos
- Push API
- Notifications API
- Sending web push notifications in web apps and browsers
- Service Worker API
- Learn more about bug reporting
Vídeos relacionados
WWDC23
WWDC22
-
Buscar neste vídeo...
-
-
8:27 - BrowserPetsWorker.js
// BrowserPetsWorker.js function handleMessageEvent(event) { // ... }; self.addEventListener('message', (event) => { handleMessageEvent(event); }); function primeCaches() { // ... }; self.addEventListener('install', (event) => { primeCaches(); }); self.addEventListener('fetch', (event) => { event.respondWith(caches.match(event.request)); }); -
8:42 - BrowserPetsMain.js
// BrowserPetsMain.js var registration; if ('serviceWorker' in navigator) { let registration = await navigator.serviceWorker.getRegistration(); if (!registration) registration = await navigator.serviceWorker.register('BrowserPetsWorker.js'); } -
9:00 - BrowserPetsMain.js subscribeToPush()
// BrowserPetsMain.js async function subscribeToPush() { // ... } // BrowserPetsMain.html <button onclick="subscribeToPush()">Register for Updates</button> -
9:19 - BrowserPetsMain.js subscribe
// BrowserPetsMain.js async function subscribeToPush() { let serverPublicKey = VAPID_PUBLIC_KEY; let subscriptionOptions = { userVisibleOnly: true, applicationServerKey: serverPublicKey }; let subscription = await swRegistration.pushManager.subscribe(subscriptionOptions); sendSubcriptionToServer(subscription); } -
9:36 - BrowserPetsMain.js subscriptionOptions
// BrowserPetsMain.js async function subscribeToPush() { let serverPublicKey = VAPID_PUBLIC_KEY; let subscriptionOptions = { userVisibleOnly: true, applicationServerKey: serverPublicKey }; let subscription = await swRegistration.pushManager.subscribe(subscriptionOptions); sendSubcriptionToServer(subscription); } -
10:21 - BrowserPetsMain.js request permission to push
// BrowserPetsMain.js async function subscribeToPush() { let serverPublicKey = VAPID_PUBLIC_KEY; let subscriptionOptions = { userVisibleOnly: true, applicationServerKey: serverPublicKey }; let subscription = await swRegistration.pushManager.subscribe(subscriptionOptions); sendSubcriptionToServer(subscription); } -
11:13 - BrowserPetsWorker.js push
// BrowserPetsWorker.js self.addEventListener('push', (event) => { let pushMessageJSON = event.data.json(); // Our server puts everything needed to show the notification // in our JSON data. event.waitUntil(self.registration.showNotification(pushMessageJSON.title, { body: pushMessageJSON.body, tag: pushMessageJSON.tag, actions: [{ action: pushMessageJSON.actionURL, title: pushMessageJSON.actionTitle, }] })); } -
12:06 - BrowserPetsWorker.js notification click
// BrowserPetsWorker.js self.addEventListener('notificationclick', async function(event) { if (!event.action) return; // This always opens a new browser tab, // even if the URL happens to already be open in a tab. clients.openWindow(event.action); });
-