De browser-standaard
"web push notifications". Dat is een grotendeels "client side"-techniek, maar je moet het wel uiteindelijk koppelen aan de serverkant van de website.
Wat een belangrijk aspect hiervan is; wij sturen daarbij een encrypted bericht naar google/mozilla/microsoft om die uiteindelijk bij jou terecht te laten komen. Het is dus niet zo dat jouw browser de hele tijd met Tweakers verbonden blijft.
En naar welke ID kijken jullie precies?
In deze context kunnen we helemaal niet naar een id kijken. Effectief begint elke pageview met een blanco stukje kennis voor het wel of niet hebben van toestemming voor webpush en het wel of niet hebben van een referentie waar e.e.a. dan heen gestuurd moet worden.
We moeten daarom elke pageview opnieuw vragen "staat web push voor ons aan?". En daar komt ja of nee op.
Als we daar ja op krijgen (zoals bij jullie) gaan we vervolgens controleren of je browser al is aangemeld omdat je er anders geen notificaties in gaat krijgen.
Dat kunnen we alleen doen door aan de browser te vragen "wat is de web push subscription voor ons?". We kunnen dus niet vragen "is web push subscription X nog actueel?"
We krijgen dan dus een antwoord "dit is de subscription (met wat info)" of domweg "er is geen subscription".
En in jullie geval komt er dus steeds bij de eerstvolgende pageview na het eindigen van je browsersessie "er is geen subscription". Waardoor wij daarna om een nieuwe subscription vragen en die vervolgens bij ons opslaan.
De enige manier waar ik mee bekend ben is op opslaan in de web storage of het gebruiken van een cookie.
Er is veel meer

Maar in dit geval moet er op drie plekken wat worden opgeslagen;
- bij ons een referentie naar waar we push berichten naartoe moeten sturen. Dit is een combinatie van een url van google/mozilla/microsoft en aanvullende identifiers om te bewijzen dat we legitiem zijn en een public key om de berichten te versleutelen zodat alleen jouw browser ze kan bekijken.
- een soortgelijke referentie bij de browser-maker zodat ie kan controlere dat ons bericht legitiem is en waar dat dan heen moet
- en ook zoiets in jouw browser o.a. om e.e.a. te controleren en daarna met de private key te onsleutelen
Het lijkt er dus op dat dat laatste steeds vervalt.
Is het ook niet een beetje zonde om die bevestiging in je eigen DB op te slaan?
Zeker omdat deze per sessie en browser kan verschillen.
Het
is juist per browser. En het
zou niet per sessie moeten verschillen. Maar dat doet het blijkbaar wel. En zoals je hierboven ziet moeten wij wel wat opslaan, omdat we niet permanent een verbinding naar jouw browser open houden wat om allerlei technische redenen ook onhaalbaar zou zijn. Wij moeten dus weten wat we waarheen moeten sturen om het uiteindelijk bij jou terecht te laten komen.
Wat gebeurd er als een gebruiker het vervolgens weer weigert?
Dan verwijderd jouw browser de laatste twee dingen van mijn lijstje en als wij een bericht sturen krijgen we de melding dat ie geweigerd werd. Daarop verwijderen we die specifieke "subscription".
m-vw schreef op zondag 10 februari 2019 @ 08:19:
@
ACM je verhaal is duidelijk, maar jij weet toch wel of er iets veranderd is bij jullie backend?
Dit heeft jaren goed gewerkt en nu ineens niet meer. Natuurlijk kan het ook aan onze kant zitten, maar voor zover ik weet heb ik niets veranderd.
Telefoon is een Samsung J5 en ik gebruik de standaard browser (v8.2.01.2)
Bij mijn weten is er niks aan onze kant veranderd. Overigens bestaat de standaard nog geen "jaren" en is onze code sowieso nog maar
anderhalf jaar oud
Er is daarna nog wel iets veranderd, maar dat zit 'm vooral in het checken of de bijbehorende notificatie wellicht al in een andere browser gelezen is en niet in het "aanmeld"-deel.
Wat nog erger is, is dat dit ook suggereert dat effectief de push notificaties alleen maar werken zolang je browser-sessie voortduurt. Zodra je browser uitgaat wordt het blijkbaar verwijderd en is dus de werking van push notificaties bij jullie nogal ondermijnd.
Dus we zouden wel via een cookie kunnen bewaren dat we al een subscription voor die specifieke browser hadden, om daarmee te voorkomen dat we die melding steeds opnieuw tonen... Maar dan is dus het eigenlijke probleem niet opgelost; als je dan inderdaad geen push notificaties blijkt te krijgen.
Het kan natuurlijk zijn dat wij het niet helemaal juist hebben geimplementeerd, maar dan zou je toch verwachten dat het bij veel meer mensen fout gaat. En bovendien hebben we domweg de code van Google gevolgd uit mijn eerdere link en voor zover wij kunnen beoordelen geen gekke dingen gedaan.
[
Voor 3% gewijzigd door
ACM op 10-02-2019 11:07
]