Fra nettleser til låseskjerm
Slik fungerer Web Push
PushLab bruker Push API i nettleseren. Nettleseren kobler abonnementet videre til push-tjenesten på den aktuelle plattformen.
Samme grensesnitt i nettleseren
Serveren trenger ikke egen integrasjon mot APNs, Firebase eller andre leverandører. Den bruker API-ene i nettleseren og sender meldinger etter Web Push-protokollen:
- Service Workertar imot meldingen selv om siden ikke er åpen
- Push APIoppretter et abonnement hos push-tjenesten nettleseren bruker
- Notifications APIber operativsystemet vise varselet
- Web Pushsender krypterte meldinger fra serveren til abonnementet
- VAPIDidentifiserer PushLab-serveren overfor push-tjenesten
Leveringen går fortsatt via push-tjenester fra Apple, Google eller Mozilla. PushLab bruker det samme Web Push-grensesnittet uansett hvilken tjeneste nettleseren velger.
Fase 1
Når enheten kobles til
- 1 Brukeren åpner HTTPS-siden, velger kallenavn og trykker «Aktiver varsler»
-
2
Nettleseren
registrerer
sw.js, ber om tillatelse og oppretter et abonnement med Push API -
3
Nettleser + push-tjeneste
oppretter abonnementet med et endepunkt (
endpoint) og krypteringsnøkler - 4 PushLab-serveren lagrer kallenavnet og det krypterte abonnementet i SQLite
Abonnementet består av endpoint, p256dh og auth.
endpoint er URL-en serveren sender til. De to nøklene brukes til å kryptere
meldingen. PushLab returnerer en tilfeldig enhets-ID og et tilgangstoken. Tokenet i
klartekst lagres bare i nettleseren. Dermed kan enheten planlegge og deaktivere egne
varsler uten brukerkonto.
Fase 2
Når et varsel sendes
- 1 Utløser enheten eller en innlogget administrator planlegger meldingen
- 2 ASP.NET Core henter abonnementet, bygger meldingen som JSON og krypterer innholdet
- 3 Push-tjenesten mottar en HTTPS-forespørsel signert med VAPID og ruter meldingen
- 4 Nettleser + OS mottar meldingen og starter PushLabs Service Worker ved behov
-
5
Varslet
sw.jsviser varselet; et trykk åpner mottakssiden i PushLab
Kryptering
Serveren krypterer meldingen med p256dh og auth etter
RFC 8291. Push-tjenesten kan rute den, men kan ikke lese meldingsinnholdet.
VAPID
VAPID-nøkkelparet lar push-tjenesten kontrollere hvilken server som sender. VAPID krypterer ikke meldingsinnholdet; det gjør RFC 8291-krypteringen.
Bakgrunnskjøring
PushLab trenger ikke kjøre i bakgrunnen hele tiden. Nettleseren og operativsystemet håndterer forbindelsen til push-tjenesten og kan starte Service Worker når det kommer en melding.
Apple-plattformene
Hva skjer på iPhone, iPad og Mac?
iPhone og iPad
I denne demoen legges PushLab først til på Hjem-skjermen fra Safari. Deretter trykker brukeren «Aktiver varsler» og godkjenner iOS-dialogen. Web Push for slike webapper på Hjem-skjermen støttes fra iOS og iPadOS 16.4.
APNs står for leveringen
WebKit oppretter et abonnement hos APNs på vegne av webappen. PushLab får URL-en og nøklene fra Push API, ikke et APNs device token. Derfor trenger serveren ikke medlemskap i Apple Developer Program.
Visning i iOS
iOS viser varslene på låseskjermen og i Varslingssenter. De kan også vises på en paret Apple Watch og følger brukerens Fokus-innstillinger.
Mac
Safari på støttede macOS-versjoner bruker også APNs. macOS kan starte riktig Service Worker selv om Safari-vinduet er lukket.
Denne demoen bruker modellen der sw.js mottar push-hendelsen og
kaller showNotification(). WebKit støtter også Declarative Web Push, men
PushLab bruker ikke denne varianten.
Android
Hva skjer på Android?
Ingen installasjon
PushLab kan brukes direkte i en oppdatert Android-nettleser. Brukeren gir enheten et kallenavn, trykker «Aktiver varsler» og godkjenner dialogen.
Nettleseren velger tjenesten
Nettleseren oppretter abonnementet hos push-tjenesten den bruker. PushLab sender til URL-en i abonnementet og trenger ingen egen Firebase-integrasjon.
To steder kan blokkere varsler
Nettstedet må ha tillatelse i nettleseren, og Android må tillate varsler fra nettleserappen. PushLab kan ikke overstyre noen av innstillingene.
Når siden er lukket
Nettleseren holder forbindelsen til push-tjenesten og starter PushLabs Service Worker når meldingen kommer. Nettsiden trenger ikke stå åpen.
PushLab bruker samme kode på de støttede enhetene
| Enhet | Hvem leverer? | Hva mottar PushLab? |
|---|---|---|
| iPhone / iPad | WebKit og APNs | PushSubscription |
| Mac med Safari | Safari/WebKit og APNs | PushSubscription |
| Android | Push-tjenesten nettleseren bruker | PushSubscription |
Chrome, Edge og Firefox støtter Web Push på datamaskin, men PushLab registrerer dem ikke. Denne demoen er avgrenset til mobil og nettbrett samt Safari på Mac.
Begrensninger
- Brukeren må gi tillatelse, og kan når som helst slå av varsler i nettleseren eller operativsystemet.
- Push-tjenesten og operativsystemet bestemmer når varselet faktisk vises. Nettverk, strømsparing og Fokus kan forsinke det.
- Et abonnement kan utløpe eller trekkes tilbake. PushLab sletter det når push-tjenesten svarer 404 eller 410.
- Når en administrator sletter en enhet, fjernes registreringen på serveren. Nettleseren kan kobles til på nytt senere.
- Push-tjenesten kan se hvor og når meldingen sendes, men ikke det krypterte meldingsinnholdet.