Step-by-step push setup for Swift, Kotlin, Jetpack Compose, React Native, Expo and Flutter apps.
Pick your framework
- Swift — native iOS, APNs through
UIApplicationDelegate. - Kotlin — native Android,
FirebaseMessaging. - Jetpack Compose — Android, with the Android 13+ permission launcher.
- React Native — bare React Native,
@react-native-firebase/messaging. - Expo —
expo-notificationsin a development build. - Flutter —
firebase_messaging. - Web push — the browser's
PushManager.
Every recipe
- Get the platform token: the hex APNs token on iOS, the FCM token on Android, a
PushSubscriptionon the web. - Register it with a stable
deviceId. See Device registration. - Save the app's push credentials.
- Send a test push, then an audience.
Android shows nothing on its own
Android pushes are FCM data messages, so Kotlin, Jetpack Compose, React Native and Flutter apps post the notification themselves — each recipe shows how. A test send says accepted either way.
Any other framework — .NET, Unity, Kotlin Multiplatform, or a backend that holds device tokens — registers with the same JSON. See the Quickstart.