Cordova SDK Basic integration guide
This section contains information on how to integrate the Pushwoosh Cordova SDK into your application.
Prerequisites
Anchor link toTo integrate the Pushwoosh Cordova SDK into your app, you will need the following:
Integration steps
Anchor link to1. Add Pushwoosh Cordova SDK Dependency
Anchor link toAdd the Pushwoosh Cordova SDK dependency to your project:
cordova plugin add pushwoosh-cordova-plugin2. Cordova SDK Initialization
Anchor link toIn the root component of your index.js file, add the following code inside the deviceready event handler. Follow the steps in exact order:
document.addEventListener('deviceready', function() { var pushwoosh = cordova.require("pushwoosh-cordova-plugin.PushNotification");
// 1. Register notification callbacks before initialization document.addEventListener('push-receive', function(event) { var notification = event.notification; console.log("Push received: " + JSON.stringify(notification)); });
document.addEventListener('push-notification', function(event) { var notification = event.notification; console.log("Push opened: " + JSON.stringify(notification)); });
// 2. Initialize Pushwoosh pushwoosh.onDeviceReady({ appid: "__YOUR_APP_ID__", projectid: "__YOUR_FCM_SENDER_ID__" });
// 3. Register the device to receive push notifications pushwoosh.registerDevice( function(status) { var pushToken = status.pushToken; // Handle successful registration }, function(status) { // Handle registration error } );}, false);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
Anchor link to3.1 Capabilities
Anchor link toTo enable Push Notifications in your project, you need to add certain capabilities.
In the Signing & Capabilities section, add the following capabilities:
Push NotificationsBackground 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
Anchor link toIn 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
Anchor link toYou 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.
4. Android Native Setup
Anchor link to4.1 Install dependencies
Anchor link toEnsure 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
Anchor link toPlace the google-services.json file into android/app folder in your project directory.
4.3 Add Pushwoosh metadata
Anchor link toIn 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
Anchor link to- 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
Anchor link toAt 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
Anchor link toIn the Pushwoosh SDK there are two event listeners, designed for handling push notifications:
push-receiveevent is triggered when a push notification is received while the app is in the foregroundpush-notificationevent is triggered when a user opens a notification
These event listeners must be registered before calling onDeviceReady(), as shown in the initialization step above. You can customize the handler logic to suit your needs:
// Register before onDeviceReady()document.addEventListener('push-receive', function(event) { var message = event.notification.message; var payload = event.notification.userdata; console.log("Push received: " + message); // Add your custom logic here});
document.addEventListener('push-notification', function(event) { var message = event.notification.message; var payload = event.notification.userdata; console.log("Push accepted: " + message); // Add your custom logic here (e.g., navigate to a specific screen)});User configuration
Anchor link toBy focusing on individual user behavior and preferences, you can deliver personalized content, leading to increased user satisfaction and loyalty
class Registration { afterUserLogin(user) {
// Set user ID pushwoosh.setUserId(user.getId());
// Setting additional user information as tags for Pushwoosh pushwoosh.setTags({ "age": user.getAge(), "name": user.getName(), "last_login": user.getLastLoginDate() }); }}Tags
Anchor link toTags are key-value pairs assigned to users or devices, allowing segmentation based on attributes like preferences or behavior, enabling targeted messaging.
class UpdateUser { afterUserUpdateProfile(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
Anchor link toEvents are specific user actions or occurrences within the app that can be tracked to analyze behavior and trigger corresponding messages or actions
class Registration {
// Track login event afterUserLogin(user) { pushwoosh.postEvent("login", { "name": user.getName(), "last_login": user.getLastLoginDate() }); }
// Track purchase event afterUserPurchase(product) { pushwoosh.postEvent("purchase", { "product_id": product.getId(), "product_name": product.getName(), "price": product.getPrice(), "quantity": product.getQuantity() }); }}Troubleshooting
Anchor link toIf you encounter any issues during the integration process, please refer to the support and community section.