From d4d992a378ab25af7fa9de14a9df254b7e5b8f06 Mon Sep 17 00:00:00 2001 From: Marat Alekperov Date: Fri, 27 Feb 2026 00:29:33 +0100 Subject: [PATCH 01/17] WIP: React Native push guide. --- src/data/nav/pubsub.ts | 4 + .../push/getting-started/react-native.mdx | 564 ++++++++++++++++++ 2 files changed, 568 insertions(+) create mode 100644 src/pages/docs/push/getting-started/react-native.mdx diff --git a/src/data/nav/pubsub.ts b/src/data/nav/pubsub.ts index c78d4d0dac..ad98500de2 100644 --- a/src/data/nav/pubsub.ts +++ b/src/data/nav/pubsub.ts @@ -254,6 +254,10 @@ export default { name: 'FCM', link: '/docs/push/getting-started/fcm', }, + { + name: 'React Native', + link: '/docs/push/getting-started/react-native', + }, ], }, { diff --git a/src/pages/docs/push/getting-started/react-native.mdx b/src/pages/docs/push/getting-started/react-native.mdx new file mode 100644 index 0000000000..dd7ba87d1d --- /dev/null +++ b/src/pages/docs/push/getting-started/react-native.mdx @@ -0,0 +1,564 @@ +--- +title: "Getting started: Push Notifications in React Native" +meta_description: "Get started with Ably Push Notifications in React Native. Learn how to register for push notifications with Firebase Cloud Messaging (FCM), activate push on your client, handle incoming notifications, and send push messages on iOS and Android." +meta_keywords: "Push Notifications React Native, Ably Push, FCM, Android Push, iOS Push, React Native push notifications, Firebase Cloud Messaging, Ably Push Notifications guide, realtime push React Native, push notification example, Ably tutorial React Native, device registration, push messaging" +--- + +This guide will get you started with Ably Push Notifications in a new React Native application. + +You'll learn how to set up your application with Firebase Cloud Messaging (FCM), register devices with Ably, send push notifications, subscribe to channel-based push, and handle incoming notifications on both iOS and Android. + +## Prerequisites + +1. [Sign up](https://ably.com/signup) for an Ably account. +2. Create a [new app](https://ably.com/accounts/any/apps/new), and create your first API key in the **API Keys** tab of the dashboard. +3. Your API key needs the `publish`, `subscribe`, and `push-admin` capabilities. +4. For channel-based push, add a rule for the channel with **Push notifications enabled** checked. In the dashboard left sidebar: **Configuration** → **Rules** → **Add** or **Edit** a rule, then enable the Push notifications option. See [channel rules](/docs/channels#rules) for details. +5. Install [Node.js](https://nodejs.org/) 18 or higher. +6. Set up your React Native development environment following the [React Native CLI Quickstart](https://reactnative.dev/docs/set-up-your-environment). +7. For iOS: Install [Xcode](https://developer.apple.com/xcode/). Push notifications require a physical iOS device (simulators do not support push). +8. For Android: Install [Android Studio](https://developer.android.com/studio). Use a physical device or an emulator with Google Play Services installed. + +### (Optional) Install Ably CLI + +Use the [Ably CLI](https://github.com/ably/cli) as an additional client to quickly test Pub/Sub features and push notifications. + +1. Install the Ably CLI: + + +```shell +npm install -g @ably/cli +``` + + +2. Run the following to log in to your Ably account and set the default app and API key: + + +```shell +ably login +``` + + +### Set up Firebase Cloud Messaging + +Firebase Cloud Messaging delivers push notifications on both Android and iOS. To enable FCM: + +1. Go to the [Firebase Console](https://console.firebase.google.com/) and create a new project (or use an existing one). +2. Register your Android app using your package name. Download `google-services.json` and place it in `android/app/`. +3. Register your iOS app using your bundle identifier. Download `GoogleService-Info.plist` and add it to your Xcode project's root target. +4. For iOS, upload your APNs authentication key to Firebase: In the Firebase Console, go to **Project Settings** → **Cloud Messaging** → **APNs Authentication Key** → **Upload**. +5. In the Ably dashboard, navigate to your app's **Notifications** tab. +6. Scroll to the **Push Notifications Setup** section and select **Configure Push**. +7. Follow the instructions to upload your Firebase service account JSON file. + +### Create a React Native project + +Create a new React Native project and install the required dependencies: + + +```shell +npx react-native@latest init PushTutorial +cd PushTutorial +npm install ably @react-native-firebase/app @react-native-firebase/messaging @notifee/react-native +``` + + +For iOS, install the native pods: + + +```shell +cd ios && pod install && cd .. +``` + + +For Android, apply the Google Services plugin in `android/build.gradle`: + + +```kotlin +// android/build.gradle +buildscript { + dependencies { + classpath('com.google.gms:google-services:4.4.2') + } +} +``` + + +Then apply it in `android/app/build.gradle`: + + +```kotlin +// android/app/build.gradle +apply plugin: 'com.google.gms.google-services' +``` + + +For iOS, add the `Push Notifications` capability in Xcode: select your target, go to **Signing & Capabilities**, and click **+ Capability** to add it. + +All further code can be added to `App.tsx`. + +## Step 1: Set up Ably + +Replace the contents of `App.tsx` with the following to initialize the Ably Realtime client and subscribe to a channel for incoming messages: + + +```react +import React, {useEffect, useRef, useState} from 'react'; +import { + Platform, + SafeAreaView, + ScrollView, + StyleSheet, + Text, + TouchableOpacity, + View, +} from 'react-native'; +import * as Ably from 'ably'; + +const CHANNEL_NAME = 'exampleChannel1'; + +// Use token authentication in production +const realtime = new Ably.Realtime({ + key: '{{API_KEY}}', + clientId: 'push-tutorial-client', +}); + +export default function App() { + const [status, setStatus] = useState('Ready to start'); + const [log, setLog] = useState([]); + const scrollViewRef = useRef(null); + + function appendLog(message: string) { + setLog(prev => [...prev, message]); + } + + function showStatus(message: string) { + setStatus(message); + console.log(message); + } + + useEffect(() => { + const channel = realtime.channels.get(CHANNEL_NAME); + channel.subscribe(message => { + appendLog(`Received: ${message.name} - ${JSON.stringify(message.data)}`); + }); + return () => { + channel.unsubscribe(); + }; + }, []); + + return ( + + Ably Push Tutorial + + {status} + + + scrollViewRef.current?.scrollToEnd({animated: true}) + }> + {log.map((entry, i) => ( + {entry} + ))} + + + ); +} + +const styles = StyleSheet.create({ + container: {flex: 1, padding: 16, backgroundColor: '#fff'}, + title: {fontSize: 22, fontWeight: 'bold', textAlign: 'center', marginBottom: 12}, + statusBox: {backgroundColor: '#f0f0f0', padding: 12, borderRadius: 6, marginBottom: 12}, + statusText: {fontSize: 14}, + logBox: {flex: 1, backgroundColor: '#fff', borderWidth: 1, borderColor: '#ddd', borderRadius: 6, padding: 8}, + logEntry: {fontFamily: Platform.OS === 'ios' ? 'Courier' : 'monospace', fontSize: 12, marginBottom: 4}, +}); +``` + + +Key configuration options: + +- **`key`**: Your Ably API key. +- **`clientId`**: A unique identifier for this client. + +## Step 2: Set up push notifications + +Push notification activation in React Native requires obtaining an FCM registration token and registering the device with Ably. Add the following functions to `App.tsx`: + + + + +```react +import messaging from '@react-native-firebase/messaging'; +import {PermissionsAndroid} from 'react-native'; +``` + + + +```react +const [deviceId] = useState( + `push-tutorial-${Platform.OS}-${Math.random().toString(36).slice(2, 9)}`, +); + +async function requestPermission(): Promise { + if (Platform.OS === 'android') { + const granted = await PermissionsAndroid.request( + PermissionsAndroid.PERMISSIONS.POST_NOTIFICATIONS, + ); + return granted === PermissionsAndroid.RESULTS.GRANTED; + } + const authStatus = await messaging().requestPermission(); + return ( + authStatus === messaging.AuthorizationStatus.AUTHORIZED || + authStatus === messaging.AuthorizationStatus.PROVISIONAL + ); +} + +async function activatePush() { + try { + showStatus('Activating push notifications...'); + const granted = await requestPermission(); + if (!granted) { + showStatus('Notification permission denied.'); + return; + } + + const fcmToken = await messaging().getToken(); + + await realtime.push.admin.deviceRegistrations.save({ + id: deviceId, + clientId: 'push-tutorial-client', + platform: Platform.OS === 'ios' ? 'ios' : 'android', + formFactor: 'phone', + push: { + recipient: { + transportType: Platform.OS === 'ios' ? 'apns' : 'fcm', + registrationToken: fcmToken, + }, + }, + }); + + showStatus(`Push activated. Device ID: ${deviceId}`); + appendLog(`Push activated. Device ID: ${deviceId}`); + } catch (error: any) { + showStatus(`Failed to activate push: ${error.message}`); + } +} + +async function deactivatePush() { + try { + showStatus('Deactivating push notifications...'); + await realtime.push.admin.deviceRegistrations.remove(deviceId); + showStatus('Push notifications deactivated.'); + } catch (error: any) { + showStatus(`Failed to deactivate push: ${error.message}`); + } +} +``` + + +When `activatePush()` is called, it: + +1. Requests notification permission from the user. +2. Obtains the FCM registration token from Firebase. +3. Registers the device with Ably's push notification service using the token. + +After successful activation, `deviceId` contains the unique device ID assigned to this installation. + +## Step 3: Subscribe and test push notifications + +Background push notifications are handled automatically by the FCM SDK and displayed as system notifications. For foreground handling, use `@notifee/react-native` to display notifications while the app is open. + +Add the following imports and foreground notification handler to `App.tsx`: + + +```react +import notifee from '@notifee/react-native'; +``` + + + +```react +useEffect(() => { + // Create a default Android notification channel + if (Platform.OS === 'android') { + notifee.createChannel({id: 'default', name: 'Default Channel'}); + } + + // Handle foreground push messages + const unsubscribe = messaging().onMessage(async remoteMessage => { + const title = remoteMessage.notification?.title ?? 'Push Notification'; + const body = remoteMessage.notification?.body ?? ''; + appendLog(`Push received: ${title} — ${body}`); + await notifee.displayNotification({ + title, + body, + android: {channelId: 'default'}, + }); + }); + + // Handle FCM token refresh + const unsubscribeTokenRefresh = messaging().onTokenRefresh(async newToken => { + try { + await realtime.push.admin.deviceRegistrations.save({ + id: deviceId, + clientId: 'push-tutorial-client', + platform: Platform.OS === 'ios' ? 'ios' : 'android', + formFactor: 'phone', + push: { + recipient: { + transportType: Platform.OS === 'ios' ? 'apns' : 'fcm', + registrationToken: newToken, + }, + }, + }); + } catch (error: any) { + console.error('Failed to update FCM token:', error.message); + } + }); + + return () => { + unsubscribe(); + unsubscribeTokenRefresh(); + }; +}, [deviceId]); +``` + + +To subscribe your device to a channel so it can receive channel-based push notifications, add the following functions: + + +```react +async function subscribeToChannel() { + try { + await realtime.push.admin.channelSubscriptions.save({ + deviceId, + channel: CHANNEL_NAME, + }); + showStatus(`Subscribed to push on channel: ${CHANNEL_NAME}`); + } catch (error: any) { + showStatus(`Failed to subscribe: ${error.message}`); + } +} + +async function unsubscribeFromChannel() { + try { + await realtime.push.admin.channelSubscriptions.remove({ + deviceId, + channel: CHANNEL_NAME, + }); + showStatus(`Unsubscribed from push on channel: ${CHANNEL_NAME}`); + } catch (error: any) { + showStatus(`Failed to unsubscribe: ${error.message}`); + } +} +``` + + +Sending push notifications using `deviceId` or `clientId` requires the `push-admin` capability for your API key. Use this method for testing purposes. In a production environment, you would typically send push notifications from your backend server (by posting messages with a `push` `extras` field to a channel). + +Use the Ably CLI to send a test notification to your client ID: + + +```shell +ably push publish --client-id push-tutorial-client \ + --title "Test push" \ + --body "Hello from CLI!" \ + --data '{"foo":"bar","baz":"qux"}' +``` + + +Or send directly to a device ID: + + +```shell +ably push publish --device-id \ + --title "Test push" \ + --body "Hello from device ID!" +``` + + +To send push notifications via a channel, you first need a UI to subscribe to the channel. + +## Step 4: Build the UI + +Update the `return` statement in `App.tsx` to add buttons that wire up all the push functions: + + +```react +return ( + + Ably Push Tutorial + + {status} + + + + Activate Push + + + Deactivate Push + + + Subscribe to Channel + + + Unsubscribe from Channel + + + + scrollViewRef.current?.scrollToEnd({animated: true}) + }> + {log.map((entry, i) => ( + {entry} + ))} + + +); +``` + + +Add the button styles to the `StyleSheet.create` call: + + +```react +buttons: {gap: 8, marginBottom: 12}, +btn: {padding: 14, borderRadius: 6, alignItems: 'center'}, +btnText: {color: '#fff', fontWeight: '600'}, +btnGreen: {backgroundColor: '#28a745'}, +btnRed: {backgroundColor: '#dc3545'}, +btnPurple: {backgroundColor: '#6f42c1'}, +btnOrange: {backgroundColor: '#fd7e14'}, +btnBlue: {backgroundColor: '#007bff'}, +btnIndigo: {backgroundColor: '#6610f2'}, +btnTeal: {backgroundColor: '#20c997'}, +``` + + +Build and run your app on a physical device: + + +```shell +# Android +npx react-native run-android + +# iOS +npx react-native run-ios --device +``` + + +Tap **Activate Push** and wait until the status message displays your device ID. Try sending a test notification using the Ably CLI commands shown in Step 3. + +### Send push via channel + +To test push notifications via channel, tap **Subscribe to Channel** in the app and then publish a message to `exampleChannel1` with a `push` `extras` field using the Ably CLI: + + +```shell +ably channels publish exampleChannel1 '{"name":"example","data":"Hello from CLI!","extras":{"push":{"notification":{"title":"Ably CLI","body":"Hello from CLI!"},"data":{"foo":"bar"}}}}' +``` + + +If you tap **Unsubscribe from Channel**, you will no longer receive push notifications for that channel. Send the same command again and verify that no notification is received. + +You can also send push notifications directly from your app. The next step shows you how. + +## Step 5: Send push with code + +Just as you can send push notifications through the Ably CLI or dashboard, you can also send them directly from your app using `deviceId` (or `clientId`), or channel publishing methods. For channel publishing, you don't need the admin capabilities for your API key. + +Add the following functions to `App.tsx`: + + +```react +async function sendPushToDevice() { + try { + await realtime.push.admin.publish( + {deviceId}, + { + notification: {title: 'Push Tutorial', body: 'Hello from device ID!'}, + data: {foo: 'bar', baz: 'qux'}, + }, + ); + showStatus(`Push sent to device ID: ${deviceId}`); + } catch (error: any) { + showStatus(`Failed to send push to device: ${error.message}`); + } +} + +async function sendPushToClient() { + try { + const clientId = realtime.auth.clientId; + await realtime.push.admin.publish( + {clientId}, + { + notification: {title: 'Push Tutorial', body: 'Hello from client ID!'}, + data: {foo: 'bar', baz: 'qux'}, + }, + ); + showStatus(`Push sent to client ID: ${clientId}`); + } catch (error: any) { + showStatus(`Failed to send push to client: ${error.message}`); + } +} +``` + + +Sending to a channel is just publishing a message on a channel with a `push` `extras` field: + + +```react +async function sendPushToChannel() { + try { + const channel = realtime.channels.get(CHANNEL_NAME); + await channel.publish({ + name: 'example', + data: 'Hello from channel!', + extras: { + push: { + notification: {title: 'Channel Push', body: `Sent push to ${CHANNEL_NAME}`}, + data: {foo: 'bar', baz: 'qux'}, + }, + }, + }); + showStatus(`Push sent to channel: ${CHANNEL_NAME}`); + } catch (error: any) { + showStatus(`Failed to send push to channel: ${error.message}`); + } +} +``` + + +Add three more buttons to the `buttons` view in your `return` statement: + + +```react + + Send Push to Device + + + Send Push to Client + + + Send Push to Channel + +``` + + +Build and run your app again. Use the new buttons to send push notifications directly to your device ID, client ID, or the subscribed channel. + +## Next steps + +* Understand [token authentication](/docs/auth/token) before going to production. +* Explore [push notification administration](/docs/push#push-admin) for managing devices and subscriptions. +* Learn about [channel rules](/docs/channels#rules) for channel-based push notifications. +* Read more about the [Push Admin API](/docs/api/realtime-sdk/push-admin). + +You can also explore the [Ably JavaScript SDK](https://github.com/ably/ably-js) on GitHub, or visit the [API references](/docs/api/realtime-sdk?lang=javascript) for additional functionality. From 296affaf23f953df988fef7befac3132b3f2140d Mon Sep 17 00:00:00 2001 From: Marat Alekperov Date: Sun, 1 Mar 2026 01:58:23 +0100 Subject: [PATCH 02/17] Update React Native push tutorial based on real-world testing Three fixes discovered while running the app: - Use Gradle 8.13 (not 8.8) for RN 0.84 compatibility; add troubleshooting note - Declare POST_NOTIFICATIONS in AndroidManifest.xml (was missing) - Use notifee.requestPermission() on Android instead of PermissionsAndroid for consistent behavior across API levels Co-Authored-By: Claude Sonnet 4.6 --- .../push/getting-started/react-native.mdx | 33 ++++++++++++------- 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/src/pages/docs/push/getting-started/react-native.mdx b/src/pages/docs/push/getting-started/react-native.mdx index dd7ba87d1d..1c236fb8f3 100644 --- a/src/pages/docs/push/getting-started/react-native.mdx +++ b/src/pages/docs/push/getting-started/react-native.mdx @@ -93,6 +93,22 @@ apply plugin: 'com.google.gms.google-services' ``` + + +Also declare the `POST_NOTIFICATIONS` permission in `android/app/src/main/AndroidManifest.xml`: + + +```xml + + + + ... + +``` + + For iOS, add the `Push Notifications` capability in Xcode: select your target, go to **Signing & Capabilities**, and click **+ Capability** to add it. All further code can be added to `App.tsx`. @@ -194,7 +210,7 @@ The buttons referenced in these functions are added to the UI in [Step 4](#step- ```react import messaging from '@react-native-firebase/messaging'; -import {PermissionsAndroid} from 'react-native'; +import notifee, {AuthorizationStatus} from '@notifee/react-native'; ``` @@ -206,10 +222,9 @@ const [deviceId] = useState( async function requestPermission(): Promise { if (Platform.OS === 'android') { - const granted = await PermissionsAndroid.request( - PermissionsAndroid.PERMISSIONS.POST_NOTIFICATIONS, - ); - return granted === PermissionsAndroid.RESULTS.GRANTED; + // Use notifee for consistent permission behavior across Android versions + const settings = await notifee.requestPermission(); + return settings.authorizationStatus >= AuthorizationStatus.AUTHORIZED; } const authStatus = await messaging().requestPermission(); return ( @@ -273,13 +288,7 @@ After successful activation, `deviceId` contains the unique device ID assigned t Background push notifications are handled automatically by the FCM SDK and displayed as system notifications. For foreground handling, use `@notifee/react-native` to display notifications while the app is open. -Add the following imports and foreground notification handler to `App.tsx`: - - -```react -import notifee from '@notifee/react-native'; -``` - +Add the following foreground notification handler to `App.tsx`: ```react From 83b15e0cbc9ecd32095dc40690f26486cb1a13a6 Mon Sep 17 00:00:00 2001 From: Marat Alekperov Date: Sun, 1 Mar 2026 18:28:10 +0100 Subject: [PATCH 03/17] Fix transportType to use fcm for both iOS and Android MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Firebase messaging().getToken() returns an FCM token on iOS too — Firebase handles the APNs token exchange internally. Using transportType 'apns' with an FCM token was incorrect. Co-Authored-By: Claude Sonnet 4.6 --- .../docs/push/getting-started/react-native.mdx | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/src/pages/docs/push/getting-started/react-native.mdx b/src/pages/docs/push/getting-started/react-native.mdx index 1c236fb8f3..939f5df002 100644 --- a/src/pages/docs/push/getting-started/react-native.mdx +++ b/src/pages/docs/push/getting-started/react-native.mdx @@ -203,19 +203,11 @@ Key configuration options: Push notification activation in React Native requires obtaining an FCM registration token and registering the device with Ably. Add the following functions to `App.tsx`: - - ```react import messaging from '@react-native-firebase/messaging'; import notifee, {AuthorizationStatus} from '@notifee/react-native'; -``` - - -```react const [deviceId] = useState( `push-tutorial-${Platform.OS}-${Math.random().toString(36).slice(2, 9)}`, ); @@ -251,7 +243,7 @@ async function activatePush() { formFactor: 'phone', push: { recipient: { - transportType: Platform.OS === 'ios' ? 'apns' : 'fcm', + transportType: 'fcm', registrationToken: fcmToken, }, }, @@ -276,6 +268,8 @@ async function deactivatePush() { ``` +`transportType` is set to `'fcm'` on both platforms because `messaging().getToken()` always returns an FCM registration token, even on iOS. Firebase exchanges the APNs device token for an FCM token internally, so Ably communicates with Firebase rather than APNs directly. + When `activatePush()` is called, it: 1. Requests notification permission from the user. @@ -320,7 +314,7 @@ useEffect(() => { formFactor: 'phone', push: { recipient: { - transportType: Platform.OS === 'ios' ? 'apns' : 'fcm', + transportType: 'fcm', registrationToken: newToken, }, }, From 66030ea9ad186e7d1fedd0ac1aa5180775c68fb8 Mon Sep 17 00:00:00 2001 From: Marat Alekperov Date: Sun, 1 Mar 2026 20:50:03 +0100 Subject: [PATCH 04/17] Add note explaining permission handling on Android and iOS. --- src/pages/docs/push/getting-started/react-native.mdx | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/pages/docs/push/getting-started/react-native.mdx b/src/pages/docs/push/getting-started/react-native.mdx index 939f5df002..12eecff124 100644 --- a/src/pages/docs/push/getting-started/react-native.mdx +++ b/src/pages/docs/push/getting-started/react-native.mdx @@ -278,6 +278,10 @@ When `activatePush()` is called, it: After successful activation, `deviceId` contains the unique device ID assigned to this installation. + + ## Step 3: Subscribe and test push notifications Background push notifications are handled automatically by the FCM SDK and displayed as system notifications. For foreground handling, use `@notifee/react-native` to display notifications while the app is open. From 31c16f746bcf80fa32014d8687ad865527cdc485 Mon Sep 17 00:00:00 2001 From: Marat Alekperov Date: Sun, 1 Mar 2026 20:51:06 +0100 Subject: [PATCH 05/17] Add instruction for downloading service account json file. --- src/pages/docs/push/getting-started/react-native.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/docs/push/getting-started/react-native.mdx b/src/pages/docs/push/getting-started/react-native.mdx index 12eecff124..3fe3065170 100644 --- a/src/pages/docs/push/getting-started/react-native.mdx +++ b/src/pages/docs/push/getting-started/react-native.mdx @@ -49,7 +49,7 @@ Firebase Cloud Messaging delivers push notifications on both Android and iOS. To 4. For iOS, upload your APNs authentication key to Firebase: In the Firebase Console, go to **Project Settings** → **Cloud Messaging** → **APNs Authentication Key** → **Upload**. 5. In the Ably dashboard, navigate to your app's **Notifications** tab. 6. Scroll to the **Push Notifications Setup** section and select **Configure Push**. -7. Follow the instructions to upload your Firebase service account JSON file. +7. Follow the instructions to upload your Firebase service account JSON file (you can download it from your Firebase console: **Project configuration** → **Service Accounts** → **Generate new private key**). ### Create a React Native project From 92103ab7ccca1e3567c5f02980bfeedb467c0b7c Mon Sep 17 00:00:00 2001 From: Marat Alekperov Date: Sun, 1 Mar 2026 21:11:53 +0100 Subject: [PATCH 06/17] Add use_modular_headers! Podfile step for Firebase Swift pods Co-Authored-By: Claude Sonnet 4.6 --- src/pages/docs/push/getting-started/react-native.mdx | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/pages/docs/push/getting-started/react-native.mdx b/src/pages/docs/push/getting-started/react-native.mdx index 3fe3065170..c37b7e688b 100644 --- a/src/pages/docs/push/getting-started/react-native.mdx +++ b/src/pages/docs/push/getting-started/react-native.mdx @@ -63,7 +63,16 @@ npm install ably @react-native-firebase/app @react-native-firebase/messaging @no ``` -For iOS, install the native pods: +For iOS, add `use_modular_headers!` to `ios/Podfile` after `prepare_react_native_project!`: + + +```ruby +prepare_react_native_project! +use_modular_headers! +``` + + +This is required for Firebase Swift pods (`FirebaseCoreInternal`, `GoogleUtilities`) to be integrated as static libraries. Then install the native pods: ```shell From 96fdb1967e28aa6b1f957d137e7c647fd3637044 Mon Sep 17 00:00:00 2001 From: Marat Alekperov Date: Sun, 1 Mar 2026 22:11:27 +0100 Subject: [PATCH 07/17] Add iOS project configuration details. --- .../push/getting-started/react-native.mdx | 54 +++++++++++++------ 1 file changed, 37 insertions(+), 17 deletions(-) diff --git a/src/pages/docs/push/getting-started/react-native.mdx b/src/pages/docs/push/getting-started/react-native.mdx index c37b7e688b..c96d7f030a 100644 --- a/src/pages/docs/push/getting-started/react-native.mdx +++ b/src/pages/docs/push/getting-started/react-native.mdx @@ -63,22 +63,7 @@ npm install ably @react-native-firebase/app @react-native-firebase/messaging @no ``` -For iOS, add `use_modular_headers!` to `ios/Podfile` after `prepare_react_native_project!`: - - -```ruby -prepare_react_native_project! -use_modular_headers! -``` - - -This is required for Firebase Swift pods (`FirebaseCoreInternal`, `GoogleUtilities`) to be integrated as static libraries. Then install the native pods: - - -```shell -cd ios && pod install && cd .. -``` - +#### Configure Android project For Android, apply the Google Services plugin in `android/build.gradle`: @@ -118,7 +103,42 @@ Also declare the `POST_NOTIFICATIONS` permission in `android/app/src/main/Androi ``` -For iOS, add the `Push Notifications` capability in Xcode: select your target, go to **Signing & Capabilities**, and click **+ Capability** to add it. +#### Configure iOS project + +Open `ios/PushTutorial.xcworkspace` in Xcode and add the `Push Notifications` capability: select your target, go to **Signing & Capabilities**, and click **+ Capability**. + +Add `use_modular_headers!` to `ios/Podfile` after `prepare_react_native_project!`: + + +```ruby +prepare_react_native_project! +use_modular_headers! +``` + + +This is required for Firebase Swift pods (`FirebaseCoreInternal`, `GoogleUtilities`) to be integrated as static libraries. Then install the native pods: + + +```shell +cd ios && pod install && cd .. +``` + + +Then add `FirebaseApp.configure()` to `AppDelegate.swift` before React Native starts: + + +```swift +import Firebase + +func application( + _ application: UIApplication, + didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? = nil +) -> Bool { + FirebaseApp.configure() + // ... rest of existing setup +} +``` + All further code can be added to `App.tsx`. From 1dacac85188151b5b4b3045316e24b1ed3f2ff1d Mon Sep 17 00:00:00 2001 From: Marat Alekperov Date: Sun, 1 Mar 2026 22:13:09 +0100 Subject: [PATCH 08/17] Call registerDeviceForRemoteMessages() before getToken() on iOS Co-Authored-By: Claude Sonnet 4.6 --- src/pages/docs/push/getting-started/react-native.mdx | 1 + 1 file changed, 1 insertion(+) diff --git a/src/pages/docs/push/getting-started/react-native.mdx b/src/pages/docs/push/getting-started/react-native.mdx index c96d7f030a..dcaa23e703 100644 --- a/src/pages/docs/push/getting-started/react-native.mdx +++ b/src/pages/docs/push/getting-started/react-native.mdx @@ -263,6 +263,7 @@ async function activatePush() { return; } + await messaging().registerDeviceForRemoteMessages(); // Required to receive push notifications on iOS, no-op on Android const fcmToken = await messaging().getToken(); await realtime.push.admin.deviceRegistrations.save({ From bbe90705b5579c1dd6446e0d31faf856067d39d4 Mon Sep 17 00:00:00 2001 From: Marat Alekperov Date: Mon, 2 Mar 2026 00:54:42 +0100 Subject: [PATCH 09/17] Improve tutorial structure and wording. --- .../docs/push/getting-started/react-native.mdx | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/src/pages/docs/push/getting-started/react-native.mdx b/src/pages/docs/push/getting-started/react-native.mdx index dcaa23e703..032d8ecec4 100644 --- a/src/pages/docs/push/getting-started/react-native.mdx +++ b/src/pages/docs/push/getting-started/react-native.mdx @@ -65,7 +65,7 @@ npm install ably @react-native-firebase/app @react-native-firebase/messaging @no #### Configure Android project -For Android, apply the Google Services plugin in `android/build.gradle`: +Apply the Google Services plugin in `android/build.gradle`: ```kotlin @@ -87,10 +87,6 @@ apply plugin: 'com.google.gms.google-services' ``` - - Also declare the `POST_NOTIFICATIONS` permission in `android/app/src/main/AndroidManifest.xml`: @@ -103,6 +99,10 @@ Also declare the `POST_NOTIFICATIONS` permission in `android/app/src/main/Androi ``` + + #### Configure iOS project Open `ios/PushTutorial.xcworkspace` in Xcode and add the `Push Notifications` capability: select your target, go to **Signing & Capabilities**, and click **+ Capability**. @@ -396,9 +396,11 @@ async function unsubscribeFromChannel() { ``` + -Use the Ably CLI to send a test notification to your client ID: +Use the Ably CLI to send a test push notification to your client ID: ```shell @@ -491,7 +493,9 @@ npx react-native run-ios --device ``` -Tap **Activate Push** and wait until the status message displays your device ID. Try sending a test notification using the Ably CLI commands shown in Step 3. +You can also open each platform project in their respective IDEs and run from there. + +Tap **Activate Push** and wait until the status message displays your device ID. Try sending a test push notification using the Ably CLI commands shown in Step 3. ### Send push via channel From 5b431eb3218474b3088a43f644d51e5f8aa12640 Mon Sep 17 00:00:00 2001 From: Marat Alekperov Date: Mon, 2 Mar 2026 00:56:14 +0100 Subject: [PATCH 10/17] Replace deprecated SafeAreaView with react-native-safe-area-context. --- .../push/getting-started/react-native.mdx | 93 ++++++++++--------- 1 file changed, 49 insertions(+), 44 deletions(-) diff --git a/src/pages/docs/push/getting-started/react-native.mdx b/src/pages/docs/push/getting-started/react-native.mdx index 032d8ecec4..79ee0a4f13 100644 --- a/src/pages/docs/push/getting-started/react-native.mdx +++ b/src/pages/docs/push/getting-started/react-native.mdx @@ -151,13 +151,13 @@ Replace the contents of `App.tsx` with the following to initialize the Ably Real import React, {useEffect, useRef, useState} from 'react'; import { Platform, - SafeAreaView, ScrollView, StyleSheet, Text, TouchableOpacity, View, } from 'react-native'; +import {SafeAreaView} from 'react-native-safe-area-context'; import * as Ably from 'ably'; const CHANNEL_NAME = 'exampleChannel1'; @@ -193,27 +193,30 @@ export default function App() { }, []); return ( - - Ably Push Tutorial - - {status} + + + Ably Push Tutorial + + {status} + + + scrollViewRef.current?.scrollToEnd({animated: true}) + }> + {log.map((entry, i) => ( + {entry} + ))} + - - scrollViewRef.current?.scrollToEnd({animated: true}) - }> - {log.map((entry, i) => ( - {entry} - ))} - ); } const styles = StyleSheet.create({ - container: {flex: 1, padding: 16, backgroundColor: '#fff'}, + safeArea: {flex: 1, backgroundColor: '#fff'}, + container: {flex: 1, padding: 16}, title: {fontSize: 22, fontWeight: 'bold', textAlign: 'center', marginBottom: 12}, statusBox: {backgroundColor: '#f0f0f0', padding: 12, borderRadius: 6, marginBottom: 12}, statusText: {fontSize: 14}, @@ -430,35 +433,37 @@ Update the `return` statement in `App.tsx` to add buttons that wire up all the p ```react return ( - - Ably Push Tutorial - - {status} - - - - Activate Push - - - Deactivate Push - - - Subscribe to Channel - - - Unsubscribe from Channel - + + + Ably Push Tutorial + + {status} + + + + Activate Push + + + Deactivate Push + + + Subscribe to Channel + + + Unsubscribe from Channel + + + + scrollViewRef.current?.scrollToEnd({animated: true}) + }> + {log.map((entry, i) => ( + {entry} + ))} + - - scrollViewRef.current?.scrollToEnd({animated: true}) - }> - {log.map((entry, i) => ( - {entry} - ))} - ); ``` From 51057ab26269e59b8ed2ba1cdaa0494c644c5d82 Mon Sep 17 00:00:00 2001 From: Marat Alekperov Date: Mon, 2 Mar 2026 01:30:31 +0100 Subject: [PATCH 11/17] Improve explanation of FCM pushes via APNs. --- src/pages/docs/push/getting-started/react-native.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/docs/push/getting-started/react-native.mdx b/src/pages/docs/push/getting-started/react-native.mdx index 79ee0a4f13..1e832ef9a6 100644 --- a/src/pages/docs/push/getting-started/react-native.mdx +++ b/src/pages/docs/push/getting-started/react-native.mdx @@ -301,7 +301,7 @@ async function deactivatePush() { ``` -`transportType` is set to `'fcm'` on both platforms because `messaging().getToken()` always returns an FCM registration token, even on iOS. Firebase exchanges the APNs device token for an FCM token internally, so Ably communicates with Firebase rather than APNs directly. +The `transportType` is set to `fcm` on both platforms because `messaging().getToken()` always returns an FCM registration token, even on iOS. Firebase exchanges the APNs device token for an FCM token internally, so Ably communicates with Firebase rather than APNs directly (instead Firebase sends push notifications to iOS devices via APNs). When `activatePush()` is called, it: From 6ad0c09296cbb31e2d83fd911247dd3c6ffe7bed Mon Sep 17 00:00:00 2001 From: Marat Alekperov Date: Mon, 2 Mar 2026 01:50:48 +0100 Subject: [PATCH 12/17] Refactor device registration into saveDeviceRegistration helper and move token refresh listener into activatePush. Co-Authored-By: Claude Sonnet 4.6 --- .../push/getting-started/react-native.mdx | 63 +++++++++---------- 1 file changed, 29 insertions(+), 34 deletions(-) diff --git a/src/pages/docs/push/getting-started/react-native.mdx b/src/pages/docs/push/getting-started/react-native.mdx index 1e832ef9a6..6de3c7c774 100644 --- a/src/pages/docs/push/getting-started/react-native.mdx +++ b/src/pages/docs/push/getting-started/react-native.mdx @@ -257,6 +257,23 @@ async function requestPermission(): Promise { ); } +const tokenRefreshUnsubscribeRef = useRef<(() => void) | null>(null); + +async function saveDeviceRegistration(token: string) { + await realtime.push.admin.deviceRegistrations.save({ + id: deviceId, + clientId: 'push-tutorial-client', + platform: Platform.OS === 'ios' ? 'ios' : 'android', + formFactor: 'phone', + push: { + recipient: { + transportType: 'fcm', + registrationToken: token, + }, + }, + }); +} + async function activatePush() { try { showStatus('Activating push notifications...'); @@ -268,18 +285,15 @@ async function activatePush() { await messaging().registerDeviceForRemoteMessages(); // Required to receive push notifications on iOS, no-op on Android const fcmToken = await messaging().getToken(); - - await realtime.push.admin.deviceRegistrations.save({ - id: deviceId, - clientId: 'push-tutorial-client', - platform: Platform.OS === 'ios' ? 'ios' : 'android', - formFactor: 'phone', - push: { - recipient: { - transportType: 'fcm', - registrationToken: fcmToken, - }, - }, + await saveDeviceRegistration(fcmToken); + + tokenRefreshUnsubscribeRef.current?.(); + tokenRefreshUnsubscribeRef.current = messaging().onTokenRefresh(async newToken => { + try { + await saveDeviceRegistration(newToken); + } catch (error: any) { + console.error('Failed to update FCM token:', error.message); + } }); showStatus(`Push activated. Device ID: ${deviceId}`); @@ -293,6 +307,8 @@ async function deactivatePush() { try { showStatus('Deactivating push notifications...'); await realtime.push.admin.deviceRegistrations.remove(deviceId); + tokenRefreshUnsubscribeRef.current?.(); + tokenRefreshUnsubscribeRef.current = null; showStatus('Push notifications deactivated.'); } catch (error: any) { showStatus(`Failed to deactivate push: ${error.message}`); @@ -341,31 +357,10 @@ useEffect(() => { }); }); - // Handle FCM token refresh - const unsubscribeTokenRefresh = messaging().onTokenRefresh(async newToken => { - try { - await realtime.push.admin.deviceRegistrations.save({ - id: deviceId, - clientId: 'push-tutorial-client', - platform: Platform.OS === 'ios' ? 'ios' : 'android', - formFactor: 'phone', - push: { - recipient: { - transportType: 'fcm', - registrationToken: newToken, - }, - }, - }); - } catch (error: any) { - console.error('Failed to update FCM token:', error.message); - } - }); - return () => { unsubscribe(); - unsubscribeTokenRefresh(); }; -}, [deviceId]); +}, []); ``` From f291a1280f45969eb657b66440f29f27ed371958 Mon Sep 17 00:00:00 2001 From: Marat Alekperov Date: Mon, 2 Mar 2026 02:13:08 +0100 Subject: [PATCH 13/17] Small fixes. --- src/pages/docs/push/getting-started/react-native.mdx | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/pages/docs/push/getting-started/react-native.mdx b/src/pages/docs/push/getting-started/react-native.mdx index 6de3c7c774..9d94bf515c 100644 --- a/src/pages/docs/push/getting-started/react-native.mdx +++ b/src/pages/docs/push/getting-started/react-native.mdx @@ -159,6 +159,8 @@ import { } from 'react-native'; import {SafeAreaView} from 'react-native-safe-area-context'; import * as Ably from 'ably'; +import messaging from '@react-native-firebase/messaging'; +import notifee, {AuthorizationStatus} from '@notifee/react-native'; const CHANNEL_NAME = 'exampleChannel1'; @@ -228,8 +230,8 @@ const styles = StyleSheet.create({ Key configuration options: -- **`key`**: Your Ably API key. -- **`clientId`**: A unique identifier for this client. +- `key`: Your Ably API key. +- `clientId`: A unique identifier for this client. ## Step 2: Set up push notifications @@ -237,12 +239,10 @@ Push notification activation in React Native requires obtaining an FCM registrat ```react -import messaging from '@react-native-firebase/messaging'; -import notifee, {AuthorizationStatus} from '@notifee/react-native'; - const [deviceId] = useState( `push-tutorial-${Platform.OS}-${Math.random().toString(36).slice(2, 9)}`, ); +const tokenRefreshUnsubscribeRef = useRef<(() => void) | null>(null); // To store the FCM token refresh listener unsubscribe function async function requestPermission(): Promise { if (Platform.OS === 'android') { @@ -257,8 +257,6 @@ async function requestPermission(): Promise { ); } -const tokenRefreshUnsubscribeRef = useRef<(() => void) | null>(null); - async function saveDeviceRegistration(token: string) { await realtime.push.admin.deviceRegistrations.save({ id: deviceId, From 6ea72fef01a856347b9738792701613ac44c7219 Mon Sep 17 00:00:00 2001 From: Marat Alekperov Date: Mon, 2 Mar 2026 02:20:37 +0100 Subject: [PATCH 14/17] Add screenshot. --- ...react-native-push-getting-started-guide.png | Bin 0 -> 119009 bytes .../docs/push/getting-started/react-native.mdx | 2 ++ 2 files changed, 2 insertions(+) create mode 100644 src/images/content/screenshots/getting-started/react-native-push-getting-started-guide.png diff --git a/src/images/content/screenshots/getting-started/react-native-push-getting-started-guide.png b/src/images/content/screenshots/getting-started/react-native-push-getting-started-guide.png new file mode 100644 index 0000000000000000000000000000000000000000..eb9b8e1f58d4d505864db3012aaa92becb8fa61f GIT binary patch literal 119009 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%0D-^{Z4PAhapQ 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 AE&u=k literal 0 HcmV?d00001 diff --git a/src/pages/docs/push/getting-started/react-native.mdx b/src/pages/docs/push/getting-started/react-native.mdx index 9d94bf515c..b087402566 100644 --- a/src/pages/docs/push/getting-started/react-native.mdx +++ b/src/pages/docs/push/getting-started/react-native.mdx @@ -593,6 +593,8 @@ Add three more buttons to the `buttons` view in your `return` statement: Build and run your app again. Use the new buttons to send push notifications directly to your device ID, client ID, or the subscribed channel. +![Screenshot of the React Native push tutorial application](../../../../images/content/screenshots/getting-started/react-native-push-getting-started-guide.png) + ## Next steps * Understand [token authentication](/docs/auth/token) before going to production. From bfaa5ac0c15758996f0e2c67a6c62afdf397d61b Mon Sep 17 00:00:00 2001 From: Marat Alekperov Date: Mon, 2 Mar 2026 02:57:12 +0100 Subject: [PATCH 15/17] Fixes from CLAUDE.md --- .../push/getting-started/react-native.mdx | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/pages/docs/push/getting-started/react-native.mdx b/src/pages/docs/push/getting-started/react-native.mdx index b087402566..bc1202e3eb 100644 --- a/src/pages/docs/push/getting-started/react-native.mdx +++ b/src/pages/docs/push/getting-started/react-native.mdx @@ -140,7 +140,7 @@ func application( ``` -All further code can be added to `App.tsx`. +Add all further code to `App.tsx`. ## Step 1: Set up Ably @@ -317,7 +317,7 @@ async function deactivatePush() { The `transportType` is set to `fcm` on both platforms because `messaging().getToken()` always returns an FCM registration token, even on iOS. Firebase exchanges the APNs device token for an FCM token internally, so Ably communicates with Firebase rather than APNs directly (instead Firebase sends push notifications to iOS devices via APNs). -When `activatePush()` is called, it: +`activatePush()` does the following: 1. Requests notification permission from the user. 2. Obtains the FCM registration token from Firebase. @@ -326,12 +326,12 @@ When `activatePush()` is called, it: After successful activation, `deviceId` contains the unique device ID assigned to this installation. ## Step 3: Subscribe and test push notifications -Background push notifications are handled automatically by the FCM SDK and displayed as system notifications. For foreground handling, use `@notifee/react-native` to display notifications while the app is open. +The FCM SDK handles background push notifications automatically and displays them as system notifications. For foreground handling, use `@notifee/react-native` to display notifications while the app is open. Add the following foreground notification handler to `App.tsx`: @@ -392,8 +392,8 @@ async function unsubscribeFromChannel() { ``` - + + ## Step 3: Subscribe and test push notifications The FCM SDK handles background push notifications automatically and displays them as system notifications. For foreground handling, use `@notifee/react-native` to display notifications while the app is open.