Push Callback
Follow

Push Token Callback

MoEngage plugin triggers the pushTokenGenerated event whenever device token is generated. This event is a common trigger for both iOS and Android platforms and is available from plugin version 6.0.0. Refer to the below code to set listener to the same:

TypeScript
import ReactMoE from 'react-native-moengage' 
ReactMoE.setEventListener("pushTokenGenerated", (payload) => { 
  console.log("pushTokenGenerated", payload); 
});

Payload received in the callback is a MoEPushToken instance with the following definition:

TypeScript
class MoEPushToken {
 /// Native platform from which the callback was triggered.(ios/android)
 platform: MoEPlatform;
 
 /// push type associated with platform
 pushService: MoEPushService;
/// push token value token: String; }

Push Click Callback

MoEngage plugin triggers the pushClicked event whenever a notification is clicked. This event is a common trigger for both iOS and Android platforms and is available from plugin version 6.0.0. Refer to the below code to set listener to the same:

 

Make sure you are calling initialize() method of the plugin to receive these callbacks. Refer Initialise React-Native Component for more info.

TypeScript
import ReactMoE from 'react-native-moengage' 
ReactMoE.setEventListener("pushClicked", (notificationPayload) => { 
  console.log("pushClicked", notificationPayload); 
});

Make sure this callback is set as soon as the application is initialized. Preferably in the constructor of your App.js.

NotificationPayload received in the callback is a MoEPushPayload instance with the following definition:

TypeScript
class MoEPushPayload {
  /// account payload for which callback is received
  accountMeta: MoEAccountMeta;
  
  /// Push click payload
  data: MoEPushCampaign;
  
  /// Native platform from which the callback was triggered.(ios/android)
  platform: MoEPlatform;
}

class MoEPushCampaign {
  /// notification payload
  payload: Map<String, Object>
 
  ///boolean value indicating if the user clicked on the default content or not.
  isDefaultAction: Boolean;
///Action to be performed on notification click. clickAction: Map<String, Object>; }

Payload Structure for clickedAction Map

JSON
{
  "clickedAction": {
    "type": "navigation/customAction",
    "payload": {
      "type": "screenName/deepLink/richLanding",
      "value": "",
      "kvPair": {
        "key1": "value1",
        "key2": "value2",
        ...
      }
    }
  }
}

platform - Native platform from which callback is triggered. Possible values - androidios
isDefaultAction - This key is present only for the Android Platform. It's a boolean value indicating if the user clicked on the default content or not. true if the user clicks on the default content else false.
clickedAction - Action to be performed on notification click.
clickedAction.type - Type of click action. Possible values navigation and customAction. Currently, customAction is supported only on Android.
clickAction.payload - Action payload for the clicked action.
clickedAction.payload.type - Type of navigation action defined. Possible values screenNamedeepLinkrichLanding. Currently, in the case of iOS, richlanding and deep-link URL are processed internally by the SDK and not passed in this callback therefore possible value in case of iOS is only screenName.
clickAction.value - value entered for navigation action or custom payload.
clickAction.kvPair - Custom key-value pair entered on the MoEngage Platform.
payload - Complete campaign payload.

Android Payload

If the user clicks on the default content of the notification the key-value pair and campaign payload can be found inside the payload key. If the user clicks on the action button or a push template action the action payload would be found inside clickedAction.
You can use the isDefaultAction key to check whether the user clicked on the default content or not and then parse the payload accordingly.

iOS Payload

In the case of iOS, you would always receive the key-value pairs with respect to clicked action in clickedAction property. Refer to this Notification Payload for knowing the iOS notification payload structure.

Self-Handled Push Click (Optional)

In Android, when the user clicks the Notification the SDK does the redirection & passes the callback to the Application but this can be used if you want to handle the redirection when the Application is in the foreground.

While initializing the React-Native Plugin, add the below push config option

TypeScript
import { MoEPushConfig, MoEInitConfig } from "react-native-moengage";
ReactMoE.initialize(
    "Your App Id",
    new MoEInitConfig(new MoEPushConfig(true))
);

You must call the above initialize method whenever the React Component is mounted & Application comes to the foreground. 

Enable the Self-Handled callback in the Android Native modules while initializing the MoEngage SDK

KotlinJava
val moEngage = MoEngage.Builder(this, "Your App Id")
MoEInitializer.initializeDefaultInstance(applicationContext, moEngage, true)

Add the below Activity to your AndroidManifest.xml

Xml

<manifest ...>
    <application ...>
        <activity
            android:name="com.moengage.pushbase.activities.PushTracker"
            android:launchMode="singleInstance"
            tools:replace="android:launchMode" />
    </application>
<manifest/>

If you're enabling this option, you must handle the Deeplinking & Navigate to Screen click action when the Application is in the foreground (selfHandledPushRedirection is true in the click callback payload). 

 

In most cases, this step is not required. This is only if you want the SDK to not do any redirection when the notification is clicked in the foreground state (RichLanding actions will still be handled from SDK). 
If you just want to get the callback, check the Push Click Callback.

Was this article helpful?
0 out of 0 found this helpful