Najpomembnejši spike (BRIEF v7, razdelek 13 / FAZA 0, razdelek 6):
ali service worker na iOS ob pushu dešifrira payload in prikaže berljivo obvestilo — tudi pri
popolnoma zaprti aplikaciji. Zaženi na obeh iPhonih (celoten tok lahko najprej
preveriš v namiznem Chromu z nameščeno PWA). Rezultat prilepi v spike/REZULTATI.md;
vsak neuspeh dokumentiraj z verzijo iOS.
Aplikacija ne teče kot PWA z domačega zaslona (display-mode ni standalone) — testi so ustavljeni.
Push na iOS deluje samo v nameščeni PWA (iOS 16.4+):
1. Odpri to stran v Safariju → tapni Deli (kvadrat s puščico) →
Dodaj na začetni zaslon → Dodaj.
2. Aplikacijo odpri z ikone na začetnem zaslonu, ne iz Safarija.
Na namizju: v Chromu namesti aplikacijo (ikona za namestitev v naslovni vrstici) in jo odpri kot okno.
Ustvari AES-256-GCM ključ (extractable: false) in ga shrani v IndexedDB
(baza mateleni-spike, shramba keys). Če ključ že obstaja, se obdrži.
Zahteva dovoljenje za obvestila, se naroči na push (VAPID ključ zgoraj) in naročnino
pošlje na /api/subscribe → KV sub:<partner>.
Šifrira »Večerja z Ano · čez 1 uro« s ključem iz IndexedDB (AAD spike:s4,
naključen 96-bitni IV) in pošlje prek /api/send-test. SW mora obvestilo
dešifrirati — preveri, da obvestilo prikazuje berljivo besedilo, ne kode.
Klikni gumb — strežnik bo push poslal čez 20 sekund.
TAKOJ popolnoma zapri aplikacijo (pregled aplikacij → podrsaj navzgor).
Obvestilo mora prispeti v ~25 s z berljivim besedilom »Večerja z Ano · čez 1 uro«.
Odpri aplikacijo — dnevnik spodaj izpiše zadnje stanje SW. Razsodbo označi ročno zgoraj.
(e) Test po 48 h brez odpiranja
Po opravljenem (a)–(d) aplikacije 48 ur ne odpiraj.
Po 48 h odpri aplikacijo in klikni samo »(c) Pošlji šifriran push« —
ne klikaj »Naroči se« (to bi naročnino obnovilo in test izničilo).
Obvestilo prispe → naročnina še živi → PASS. Strežnik vrne napako »naročnina potekla (410)«
ali obvestila ni → FAIL (zapiši v opombe, z verzijo iOS).
Enako kot (c), a z enim pokvarjenim bajtom šifropisa. GCM mora pasti — obvestilo mora biti
generično »Mateleni · Opomnik«, nikoli surov payload.