Fix: flutter_timezone 5.x liefert TimezoneInfo-Objekt – identifier speichern statt Objekt
Der Firestore-Write warf zur Laufzeit eine Exception (nicht serialisierbares Objekt), wodurch auch der FCM-Token nie gespeichert wurde. Fehler bei der Push-Registrierung werden jetzt geloggt statt verschluckt. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
c1205fb959
commit
876ed06a97
1 changed files with 10 additions and 2 deletions
|
|
@ -49,7 +49,9 @@ class FirebasePushRegistrationService implements PushRegistrationService {
|
|||
final timezone = await FlutterTimezone.getLocalTimezone();
|
||||
await _firestore.collection('users').doc(uid).set({
|
||||
'fcmTokens': FieldValue.arrayUnion([token]),
|
||||
'timezone': timezone,
|
||||
// IANA-Kennung, z. B. "Europe/Berlin" – das Objekt selbst ist nicht
|
||||
// Firestore-serialisierbar.
|
||||
'timezone': timezone.identifier,
|
||||
}, SetOptions(merge: true));
|
||||
}
|
||||
|
||||
|
|
@ -78,6 +80,12 @@ final pushRegistrationServiceProvider = Provider<PushRegistrationService>((ref)
|
|||
final pushSetupProvider = Provider<void>((ref) {
|
||||
final user = ref.watch(authStateProvider).value;
|
||||
if (user != null) {
|
||||
ref.read(pushRegistrationServiceProvider).registerDevice(user);
|
||||
ref.read(pushRegistrationServiceProvider).registerDevice(user).catchError(
|
||||
(Object error, StackTrace stack) {
|
||||
// Bewusst nur loggen: Push-Registrierung darf den App-Start nie
|
||||
// blockieren, aber Fehler müssen im Log sichtbar sein.
|
||||
debugPrint('Push-Registrierung fehlgeschlagen: $error');
|
||||
},
|
||||
);
|
||||
}
|
||||
});
|
||||
|
|
|
|||
Loading…
Reference in a new issue