Push Notifications for the React Native Module

How to configure your application to receive and respond to notifications.

Before setting up push notifications in your app, you need to configure push services in the Airship dashboard. See iOS Channel Configuration for APNs setup and Android Channel Configuration for FCM setup.

Platform Setup

Before you can send and receive push notifications, you need to configure your app for the platform(s) you’re targeting.

iOS

Enable Push Notifications Capability

  1. Open your project in Xcode.

  2. Click on your project in the Project Navigator.

  3. Select your main app target and then click the Signing & Capabilities tab.

  4. If you do not see Push Notifications enabled, click + Capability and add Push Notifications.

Enable Background Modes

  1. Select your main app target and then click the Signing & Capabilities tab.

  2. Click + Capability and add Background Modes.

  3. In the Background Modes section, select the Remote notifications checkbox.

Notification Service Extension

To take advantage of notification attachments, such as images, animated gifs, and video, you will need to create a notification service extension.

Follow the steps in the [iOS Notification Service Extension Guide](https://docs.airship.com/developer/sdk-integration/apple/installation/getting-started/#notification-service-extension).
The Airship Expo plugin automatically configures iOS capabilities (Push Notifications and Background Modes) and the Notification Service Extension. No manual Xcode configuration is required.

Android

Configure Firebase Cloud Messaging (FCM) to enable push notifications on Android.

FCM Setup

  1. Download the Android Firebase configuration file google-services.json from the application’s Firebase console into the root directory at android/app/google-services.json.

    If your react-native application does not have an associated app in the Firebase console, follow the FCM setup instructions to set one up.

Expo automatically handles the google-services.json file through its build process. See the Expo documentation for details on configuring FCM credentials.

HMS Setup

  1. Follow Huawei’s documentation to set up the HMS SDK.

     Note

    Airship requires HMS Core Push SDK 6.3.0.304 or newer.

  2. Add airshipHmsEnabled=true to the app’s gradle.properties.

Notification Configuration

Configure the notification icon and accent color in your takeOff config:

Airship.takeOff({
    default: {
        appKey: "REPLACE_WITH_YOUR_APP_KEY",
        appSecret: "REPLACE_WITH_YOUR_APP_SECRET"
    },
    site: "us",
    android: {
        notificationConfig: {
            icon: "ic_notification",
            accentColor: "#00ff00"
        }
    }
});

See the React Native Setup guide for complete takeOff configuration options.

Enable User Notifications

The Airship SDK distinguishes between user notifications (visible to users) and silent push notifications (background data delivery). User notifications require explicit permission from the user.

By default, user notifications are disabled. Enable them when you want to show visible notifications to users.

Basic Enablement

The simplest way to enable user notifications is with setUserNotificationsEnabled():

await Airship.push.setUserNotificationsEnabled(true);

This will prompt the user for permission if not already granted. However, it does not provide feedback on whether the user accepted or denied the permission.

 Note

For apps that target Android 13 (API 33) and above, enabling user notifications will display a runtime permission prompt.

To increase the likelihood that the user will accept, you should avoid prompting the user for permission immediately on app startup, and instead wait for a more appropriate time to prompt for notification permission.

Async Enablement with Fallback

For more control over the permission flow, use enableUserNotifications() which returns the permission result and supports a fallback option:

// Enable with system settings fallback
const granted = await Airship.push.enableUserNotifications({
  fallback: PromptPermissionFallback.SystemSettings
});

if (granted) {
  console.log('Notifications enabled');
} else {
  console.log('Notifications denied');
}

The SystemSettings fallback option will prompt the user to open system settings if permission is denied on iOS or denied silently on Android. This gives users a second chance to enable notifications if they initially declined.

Checking Notification Status

To check if user notifications are currently enabled:

const enabled = await Airship.push.isUserNotificationsEnabled();

For more detailed status information, use getNotificationStatus():

const status = await Airship.push.getNotificationStatus();
console.log('Are notifications allowed:', status.areNotificationsAllowed);
console.log('Is opted in:', status.isOptedIn);

To monitor notification status changes in real-time:

Airship.addListener(EventType.PushNotificationStatusChangedStatus, (event) => {
  console.log('Notification status changed:', event.status);
  console.log('Is opted in:', event.status.isOptedIn);
});

Getting the Registration Token

To get the platform-specific push token (APNs token on iOS, FCM token on Android):

const token = await Airship.push.getRegistrationToken();

For more advanced event handling and token updates, see Handling Notification Events.