Android
To use Push Notification in your Capacitor application you need to configure Firebase into your application, refer to the Push Notification documentation to configure Push Notification in your application.
In case, your application is handling the push token registration and push payload we highly recommend you use the native Android methods(mentioned in the documentation above) for passing the token and the payload to the SDK.
If for whatever reason you wish to pass the push token and payload to the SDK via the Capacitor code uses the below APIs
Passing Push Token
import { MoECapacitorCore } from 'capacitor-moengage-core'
// pass the push token as a string
MoECapacitorCore.passFcmPushToken({ token: "TOKEN" });
Passing Push Payload
import { MoECapacitorCore } from 'capacitor-moengage-core'
// pass the push token as a string
MoECapacitorCore.passFcmPushPayload({ payload: json });
We highly recommend you to use the Android native APIs for passing the push payload to the MoEngage SDK instead of the Capacitor APIs. Capacitor Engine might not get initialised if the application is killed or if the notification is not sent at a high priority. |
Customizing Push notification
If required the application can customize the behavior of notification by using Native Android code (Java/Kotlin). To learn more about the customization refer to Advanced Push Configuration documentation.
Instead of extending PushMessageListener
as mentioned in the above document extend PluginPushCallback
Refer to the below documentation for Push Amp+, Push Templates, Geofence.
iOS
APNS Certificate :
First, you will have to create an APNS certificate and upload to the dashboard to be able to send push notifications in iOS. Follow the steps below to do that :
- Create an APNS certificate
- Convert the resultant certificate to .pem format
- Upload .pem file to MoEngage Dashboard
Adding Push Entitlement to your Project :
Once the APNS Certificate is uploaded, enable Push Entitlement in the Xcode project. For that select your app target, then go to Capabilities. Here enable the Push Notifications capability for your app as shown below :
Uninstall Tracking :
We make use of silent pushes to track uninstalls. For tracking uninstalls of all the users, enable Remote Notification background mode in-app capabilities for the same as shown below :
Push Registration :
After this you will have to register for push notification by using registerForPush method of the plugin as shown below :
//This is only for iOS
import { MoECapacitorCore } from 'capacitor-moengage-core'
MoECapacitorCore.registerForPush();
AppDelegate Remote notification methods will not be calledThe plugin gets all the remote notification-related callbacks, therefore you won't receive any of them in your AppDelegate. Therefore, you will have to add observers for the notifications provided by the plugin instead. |
Rich Push and Templates Support:
Please refer to the Native iOS SDK docs for supporting Rich Push(images/videos/audio in the notification) and Templates in the app:
Configuring Push Callbacks
MoEngage Plugin provides listeners for push events. These events are a common trigger for both iOS and Android platforms. Refer to the below code to set listener to the same:
Make sure you are calling |
Push Token Generated Observer
Add a listener to listen to the pushTokenGenerated
as shown below.
import { MoECapacitorCore, MoEPushTokenData } from 'capacitor-moengage-core'
MoECapacitorCore.addListener("pushTokenGenerated", (data: MoEPushTokenData) => {
console.log(" Received callback 'pushTokenGenerated', data: " + JSON.stringify(data))
});
Notification Click Observers
Add a listener to listen to the pushClicked
as shown below.
import { MoECapacitorCore, MoEPushCampaignData } from 'capacitor-moengage-core'
MoECapacitorCore.addListener("pushClicked", (data: MoEPushCampaignData) => {
console.log(" Received callback 'pushClicked', data: " + JSON.stringify(data))
});
Payload
NotificationPayload received in the callback is a MoEPushCampaignData
instance with the following definition:
/**
* Push event data
*/
export interface MoEPushCampaignData {
/**
* Push campaign object
*/
pushCampaign: MoEPushCampaign;
}
/**
* Push campaign object
*/
export interface MoEPushCampaign {
/**
* Platform type
*/
platform: string;
/**
* Is the click action a defualt action
*/
isDefaultAction: boolean;
/**
* Clicked Action data
*/
clickedAction: Map<String, object>;
/**
* Key-Value Pair entered on the MoEngage Platform during campaign creation.
*/
payload: Map<String, object>;
}
Payload Structure for clickedAction
Map
{
"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 - android
, ios
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 screenName
, deepLink
, richLanding
. Currently, in the case of iOS, richlanding and deep-link URLs are processed internally by the SDK and not passed in this callback therefore possible value in the 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.