React Native SDK Basic integration guide
This section contains information on how to integrate the Pushwoosh React Native SDK into your application.
Prerequisites
Section titled “Prerequisites”To integrate the Pushwoosh React Native SDK into your app, you will need the following:
Integration steps
Section titled “Integration steps”1. Add Pushwoosh React Native SDK Dependency
Section titled “1. Add Pushwoosh React Native SDK Dependency”Add the Pushwoosh React Native SDK dependency to your project:
npm install pushwoosh-react-native-plugin --save
2. React Native SDK Initialization
Section titled “2. React Native SDK Initialization”In the root component of your index.js
file:
- Import the
pushwoosh-react-native-plugin
. - Initialize the Pushwoosh SDK.
- Call
register()
in your initialization logic to register for push notifications.
import Pushwoosh from 'pushwoosh-react-native-plugin';
AppRegistry.registerComponent(appName, () => App);
Pushwoosh.init({ "pw_appid" : "__YOUR_APP_ID__" , "project_number" : "__YOUR_FCM_SENDER_ID__"});
Pushwoosh.register();
Where:
__YOUR_APP_ID__
is the application code from the Pushwoosh Control Panel.__YOUR_FCM_SENDER_ID__
is the Firebase project number from the Firebase Console.
3. iOS Native Setup
Section titled “3. iOS Native Setup”3.1 Capabilities
Section titled “3.1 Capabilities”To enable Push Notifications in your project, you need to add certain capabilities.
In the Signing & Capabilities section, add the following capabilities:
Push Notifications
Background Modes
. After adding this capability, check the box forRemote notifications
.
If you intend to use Time Sensitive Notifications (iOS 15+), also add the Time Sensitive Notifications
capability.
3.2 Info.plist
Section titled “3.2 Info.plist”In your Runner/Info.plist
set the __PUSHWOOSH_DEVICE_API_TOKEN__
key to the Pushwoosh Device API Token:
<key>Pushwoosh_API_TOKEN</key><string>__PUSHWOOSH_DEVICE_API_TOKEN__</string>
3.3 Message delivery tracking
Section titled “3.3 Message delivery tracking”You must add a Notification Service Extension target to your project. This is essential for accurate delivery tracking and features like Rich Media on iOS.
Follow the native guide’s steps to add the extension target and the necessary Pushwoosh code within it.
3.4 Installing dependencies for the iOS React Native project
Section titled “3.4 Installing dependencies for the iOS React Native project”To install dependencies for the iOS React Native project navigate to the ios
folder in the terminal and run:
pod install --repo-update
4. Android Native Setup
Section titled “4. Android Native Setup”4.1 Install dependencies
Section titled “4.1 Install dependencies”Ensure that the required dependencies and plugins are added to your Gradle scripts:
Add the Google Services Gradle plugin to your project-level build.gradle
dependencies:
buildscript { dependencies { classpath 'com.google.gms:google-services:4.3.15' }}
Apply the plugin in your app-level build.gradle
file:
apply plugin: 'com.google.gms.google-services'
4.2 Add Firebase configuration file
Section titled “4.2 Add Firebase configuration file”Place the google-services.json
file into android/app
folder in your project directory.
4.3 Add Pushwoosh metadata
Section titled “4.3 Add Pushwoosh metadata”In your main/AndroidManifest.xml
add Pushwoosh Device API Token inside the <application>
tag:
<meta-data android:name="com.pushwoosh.apitoken" android:value="__YOUR_DEVICE_API_TOKEN__" />
Important: Be sure to give the token access to the right app in your Pushwoosh Control Panel. Learn more
5. Run the Project
Section titled “5. Run the Project”- Build and run the project.
- Go to the Pushwoosh Control Panel and send a push notification.
- You should see the notification in the app.
Extended integration
Section titled “Extended integration”At this stage, you have already integrated the SDK and can send and receive push notifications. Now, let’s explore the core functionality
Push notification event listeners
Section titled “Push notification event listeners”In the Pushwoosh SDK there are two event listeners, designed for handling push notifications:
pushReceived
event is triggered, when a push notification is receivedpushOpened
event is triggered, when a user opens a notification
You should set up these event listeners right after initialization of the SDK at the application start up:
import {DeviceEventEmitter} from 'react-native'import Pushwoosh from 'pushwoosh-react-native-plugin';
class PushwooshNotificationHandler { setupPushListeners() {
DeviceEventEmitter.addListener('pushReceived', (e) => { console.warn("Push received: " + JSON.stringify(e)); });
DeviceEventEmitter.addListener('pushOpened', (e) => { console.warn("Push accepted: " + JSON.stringify(e)); });
}}
User configuration
Section titled “User configuration”By focusing on individual user behavior and preferences, you can deliver personalized content, leading to increased user satisfaction and loyalty
import Pushwoosh from 'pushwoosh-react-native-plugin';
class Registration { afterUserLogin(user: User) {
// Set user ID Pushwoosh.setUserId(user.getId());
// Set user email Pushwoosh.setEmails(user.getEmailList());
// Setting additional user information as tags for Pushwoosh Pushwoosh.setTags({ "age": user.getAge(), "name": user.getName(), "last_login": user.getLastLoginDate() }); }}
Tags are key-value pairs assigned to users or devices, allowing segmentation based on attributes like preferences or behavior, enabling targeted messaging.
import Pushwoosh from 'pushwoosh-react-native-plugin';
class UpdateUser { afterUserUpdateProfile(user: User) {
// Set list of favorite categories Pushwoosh.setTags({ "favorite_categories": user.getFavoriteCategoriesList() });
// Set payment information Pushwoosh.setTags({ "is_subscribed": user.isSubscribed(), "payment_status": user.getPaymentStatus(), "billing_address": user.getBillingAddress() }); }}
Events
Section titled “Events”Events are specific user actions or occurrences within the app that can be tracked to analyze behavior and trigger corresponding messages or actions
import Pushwoosh from 'pushwoosh-react-native-plugin';
class Registration {
// Track login event afterUserLogin(user: User) { Pushwoosh.postEvent("login", { "name": user.getName(), "last_login": user.getLastLoginDate() }); }
// Track purchase event afterUserPurchase(product: Product) { Pushwoosh.postEvent("purchase", { "product_id": product.getId(), "product_name": product.getName(), "price": product.getPrice(), "quantity": product.getQuantity() }); }}
Troubleshooting
Section titled “Troubleshooting”If you encounter any issues during the integration process, please refer to the support and community section.