Push Notifications
Configure Account FCM and verify Guest local reminders on both platforms.
Choose the profile path
Account uses Firebase Cloud Messaging and backend notification history. Guest skips FCM/device-token synchronization and schedules local reminders. The complete runtime behavior is documented in Notifications.
Account Firebase setup
After bowler setup, register the final Android application ID and iOS bundle ID with your Firebase project. Place the downloaded files at these paths relative to mobile-app/:
androidApp/google-services.json
iosApp/iosApp/GoogleService-Info.plistAndroid build configuration selects the Firebase client matching applicationId; a mismatched JSON file fails the build. Firebase files are optional for building the template, but Account push needs valid configuration.
For iOS, configure APNs in Firebase and signing/provisioning for push. iosApp/iosApp/iosApp.entitlements declares aps-environment using APNS_ENVIRONMENT; the Xcode project sets the development/production values for the corresponding configurations. iosApp/iosApp/Info.plist includes the remote-notification background mode. Test delivery on a signed physical device.
Account registration and sending
The onboarding wizard handles Account notification permission. Native FCM callbacks register tokens with /api/v1/app/device-tokens when an authentication token is available; auth requests can also carry the cached FCM token. History comes from the backend.
Configure sending and Account services using the shared backend docs and the backend configuration section of Flutter's push guide. Its FlutterFire/mobile commands apply to Flutter; KMP uses the native files above.
Test permission denial, initial token/refresh, login/logout, foreground/background delivery, and history against your backend.
Guest local reminders
No Firebase credentials, backend, or APNs push service are needed for Guest reminders. In Notifications settings, enable the master Push Notifications switch and Tips & Updates, then grant the native notification permission. Tips schedules a daily reminder at 09:00 device local time; it is off by default. Disabling tips or the master switch cancels it.
LocalReminders in shared Kotlin plans reminders. Android uses AndroidLocalNotifications/AlarmManager and a reminder receiver; iOS uses IOSLocalNotifications/UNCalendarNotificationTrigger. Android alarms are inexact and can be delayed by power restrictions.
Only Tips & Updates drives scheduling. Queue, promotion, sound, and vibration settings do not change local reminder delivery in the current template. Test delivery, cancellation, denied permission, relaunch, and reboot on both platforms, and confirm Guest sends no device-token requests.
