From d4b72637ba3057748285500b08c57773ad91a5f0 Mon Sep 17 00:00:00 2001 From: cschlaefke Date: Thu, 20 Aug 2026 12:23:50 +0200 Subject: [PATCH] =?UTF-8?q?Doku:=20erwartete=20App-Check-DeviceCheck-Warnu?= =?UTF-8?q?ng=20beim=20iOS-Kaltstart=20erkl=C3=A4rt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Chris meldete die Fehlermeldung trotz hinterlegtem Debug-Token — Ursache ist eine bekannte Race im firebase_app_check-Plugin (nativer Standard- Provider "deviceCheck" vor dem Dart-seitigen activate()-Aufruf), nicht ein Konfigurationsfehler. Einmalig, ohne Funktionsauswirkung. Co-Authored-By: Claude Sonnet 5 --- docs/firebase-einrichtung.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/firebase-einrichtung.md b/docs/firebase-einrichtung.md index 803bfcd..f58ca45 100644 --- a/docs/firebase-einrichtung.md +++ b/docs/firebase-einrichtung.md @@ -192,6 +192,7 @@ Zwei getrennte Schritte, **nacheinander**, nicht gleichzeitig (sonst sperrt man - Android-App auswählen → **Play Integrity** als Provider aktivieren (kein zusätzliches Setup in der Play Console nötig, die API ist automatisch verfügbar). - iOS-App auswählen → **App Attest** als Provider aktivieren. - Für Testgeräte im Debug-Modus: beim ersten Start gibt die App in der Konsole (Logcat bzw. Xcode-Log) ein Debug-Token aus — das unter *App Check → Apps → \[App\] → Debug-Token verwalten* eintragen, sonst schlagen Debug-Builds nach dem Enforcement fehl. + - **Erwartete, harmlose Fehlermeldung beim iOS-Start:** `App not registered: ...exchangeDeviceCheckToken ... FAILED_PRECONDITION`. Grund: Das native Firebase-SDK registriert beim Plugin-Start zunächst intern den Standard-Provider „DeviceCheck" (bevor unser Dart-Code in `main.dart` per `activate()` auf den Debug-Provider umstellt) und schickt in diesem kurzen Fenster automatisch einen ersten Token-Refresh-Versuch los — der schlägt fehl, weil wir DeviceCheck nie in der Console aktiviert haben (wir nutzen App Attest + Debug). Einmalig beim Kaltstart, ohne Funktionsauswirkung, tritt unabhängig vom hinterlegten Debug-Token auf. Zum Prüfen, ob App Check tatsächlich funktioniert: irgendeine Funktion aufrufen (z. B. Pflanze anlegen) und in der Firebase-Console unter *App Check → APIs* nachsehen, ob „Verified requests" für die iOS-App hochzählt. - **Metriken abwarten:** In der Console unter *App Check → APIs* prüfen, dass für die genutzten Functions „Verified requests" ankommen (kann nach einem frischen Build ein paar Minuten dauern). 2. **Erst wenn Schritt 1 bestätigt ist:** In `functions/src/index.ts` und `functions/src/household.ts` bei den `onCall(...)`-Funktionen (`identifyPlant`, `diagnosePlant`, `analyzeLocation`, `assessPlantFit`, `joinHousehold`, `leaveHousehold`, `removeMember`) die Option `enforceAppCheck: true` ergänzen und neu deployen. Danach lehnen die Functions Aufrufe ohne gültiges App-Check-Token ab.