Ik probeer systeemeigen meldingen werkend te krijgen voor een TWA van mijn zelf-gehoste Discourse-site en ben tegen een zeer vreemde “soft fail” met de Digital Asset Link-verificatie aangelopen.
Hier zijn de exacte symptomen:
-
De app start en draait volledig scherm zonder de URL-balk, wat suggereert dat de asset link gedeeltelijk werkt.
-
Er verschijnt echter een “Running in Chrome” toastbericht bij elke lancering.
-
Het allerbelangrijkste is dat wanneer de PWA om toestemming voor meldingen vraagt, het de browser-stijl prompt toont, niet de systeemeigen Android-dialoog. Dit bewijst dat de delegatie van systeemeigen API’s mislukt.
Dit gedrag is consistent op alle testapparaten (Android 12 & 13) en met APK’s gegenereerd door zowel Bubblewrap als Microsoft’s PWABuilder.
Na uitgebreide debugging heb ik bevestigd dat mijn volledige client-side en publiek toegankelijke serverconfiguratie perfect lijkt te zijn. Het probleem lijkt een subtiel server-side probleem te zijn dat alleen de Android-validator beïnvloedt.
Dit is wat ik al heb geverifieerd:
-
Signing Key &
assetlinks.json: De SHA-256-vingerafdruk van mijnandroid.keystoreis een 100% exacte match met de vingerafdruk in mijn live/.well-known/assetlinks.json-bestand. -
Serverreactie: Mijn server serveert de
assetlinks.json-URL met een200 OK-status, de juisteapplication/jsonContent-Type, en geen blokkerende CORS-headers wanneer gecontroleerd met standaard webtools. -
Android App Config: Het gegenereerde
AndroidManifest.xmlis correct en bevat de standaardcom.google.browserhelper.trusted.DelegationService. -
Discourse Admin Instellingen: Mijn admin beveiligingsinstellingen voor
cors originsenAllowed crawler user agentszijn beide leeg.
Gezien dit specifieke “soft fail” gedrag, is mijn vraag:
Is er een bekende Nginx-regel, firewall-instelling, of een subtiel serverreactieprobleem (zoals een lichte vertraging of een niet-standaard header) in de standaard Discourse zelf-gehoste setup dat de Android-validator zou veroorzaken om een “gedeeltelijk vertrouwen” te verlenen (waardoor de UI op volledig scherm mogelijk wordt), maar het hogere vertrouwensniveau dat nodig is voor systeemeigen API-delegatie te weigeren?
Ik heb alles aan de clientzijde gediagnosticeerd. Elke inzichten in de diepe serverconfiguratie zou zeer gewaardeerd worden.