Push credentials are stored encrypted per project. Configure them in Project settings → Channels after creating a project in the dashboard.
Android · FCM
- Create a Firebase project with your Android app package name.
- In Firebase → Project settings → Service accounts → Generate new private key (JSON).
- Upload the JSON in Channels → Android · FCM along with the FCM Project ID.
- Ensure the app has matching
google-services.json— see Android setup.
iOS · APNs
- In Apple Developer → Keys, create an APNs Auth Key (.p8). Download it once — it cannot be re-downloaded.
- Enter Key ID, Team ID, and App Bundle ID (must match Xcode exactly).
- Upload the .p8 file — not a .p12 certificate.
- Enable Push Notifications + Background Modes on the Runner target — see iOS setup.
Common delivery errors
| Error | Fix |
|---|---|
apns_not_configured | Complete iOS · APNs in Channels |
apns_403_InvalidProviderToken | Re-check Key ID, Team ID, and .p8; ensure key has APNs enabled and is not revoked |
TopicDisallowed | Dashboard Bundle ID must match the app's bundle identifier |
BadDeviceToken | Usually prod/sandbox mismatch — SDK retries automatically; reinstall app if stale |
fcm_not_configured | Upload FCM service account JSON in Channels |
invalid_grant | FCM JSON rejected — regenerate service account key |
info
Note
After updating credentials, the delivery worker refreshes cached clients when
PushConfig.updatedAt changes. Restart the worker if you are running an older build without hot credential reload.