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

Abonnementet opprettes. Ingen pushmelding sendes ennå.
  1. 1 Brukeren åpner HTTPS-siden, velger kallenavn og trykker «Aktiver varsler»
  2. 2 Nettleseren registrerer sw.js, ber om tillatelse og oppretter et abonnement med Push API
  3. 3 Nettleser + push-tjeneste oppretter abonnementet med et endepunkt (endpoint) og krypteringsnøkler
  4. 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

Varslets vei fra PushLab til låseskjermen.
  1. 1 Utløser enheten eller en innlogget administrator planlegger meldingen
  2. 2 ASP.NET Core henter abonnementet, bygger meldingen som JSON og krypterer innholdet
  3. 3 Push-tjenesten mottar en HTTPS-forespørsel signert med VAPID og ruter meldingen
  4. 4 Nettleser + OS mottar meldingen og starter PushLabs Service Worker ved behov
  5. 5 Varslet sw.js viser 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?

PushLab Abonnementets endepunkt Apple Push Notification service (APNs) WebKit + iOS/macOS Låseskjerm / Varslingssenter

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?

PushLab Abonnementets endepunkt Nettleserens push-tjeneste Nettleser + Android Varslingspanelet

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.

Primærkilder