Umgebung:
Cordova iOS 7.x (WKWebView)
Natives Plugin verarbeitet Face ID/Touch ID und Passcode-Fallback
Webebene ( ServletController) lädt Seiten über serverseitige Weiterleitung (keine vollständige Navigation)
Problembeschreibung:
- Wenn die biometrische Authentifizierung erfolgreich ist → funktioniert alles normal.
- Wenn die Passcode-Anmeldung direkt verwendet wird → funktioniert auch.
Das native Plugin sendet zwei Rückrufe (biometrischer Fehler → Passcode erfolgreich). Der Passcode-Erfolgsrückruf lädt die Homepage in dasselbe WKWebView. Der HTML-Code wird angezeigt, aber document.ready und deviceready werden nie ausgelöst. Jeder Cordova-Aufruf (z. B. showHomeScreeninApp("success")) löst ReferenceError: Can't find variable: cordova aus. Wenn der Benutzer die App minimiert und erneut öffnet, funktioniert plötzlich alles.
Was wir vermuten:
Der native UIViewController, der den Passcode-Bildschirm verwaltet, reißt die Cordova-Brücke herunter oder trennt sie, wenn sie geschlossen wird, sodass der WebView-Kontext erhalten bleibt, die Brücke jedoch nicht mehr vorhanden ist. Der Webinhalt wird per Servlet-Weiterleitung neu geladen, aber es werden keine neuen Lebenszyklusereignisse ausgelöst.
Bisher versucht:
- JS-Problemumgehung, die cordova.js erneut injiziert und deviceready erneut auslöst → funktioniert vorübergehend.
- Überprüft, dass cordova.js vorhanden und geladen ist.
- Das Problem tritt nur unter iOS auf, nicht unter Android.
Nach erfolgreichem Passcode (auch wenn die Biometrie zuerst fehlgeschlagen ist) sollte WKWebView seine Cordova-Brücke behalten und den normalen Deviceready-/JS-Lebenszyklus auslösen, damit die Startseite ordnungsgemäß ausgeführt wird.
Frage:
Welche Änderungen sind auf der nativen iOS-Seite (Plugin oder WKWebView-Lebenszyklus) erforderlich, um die Cordova-Brücke aktiv zu halten oder sie nach dem Übergang von Biometrie zu Passcode wieder ordnungsgemäß anzuschließen?
Mobile version