Step-by-step push setup for Swift, Kotlin, Jetpack Compose, React Native, Expo, Flutter and Capacitor 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. - Capacitor —
@capacitor/push-notifications, in an Ionic or Capacitor app. - 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 in Native Notify.
- Send a test push, then an audience.
A Swift or Kotlin app runs from Xcode or Android Studio on a simulator, an emulator or a phone; nothing needs building first. iPhone sends need a paid Apple Developer Program membership and a registered Bundle ID, and Android sends need a Firebase project — Push credentials lists each step.
Android shows nothing on its own
Android pushes are FCM data messages, so Kotlin, Jetpack Compose, React Native, Expo, Flutter and Capacitor apps show 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.