Configuring Callbacks in Flutter
MoEngage's Flutter plugin optionally provides a callback on push click. To register for the callback call the setUpPushCallbacks()
on the MoEngageFlutter
object in your dart code.
This API takes a method as input with whose typedef
is PushCallbackHandler(PushCampaign pushCampaign)
import 'package:moengage_flutter/moengage_flutter.dart';
void _onPushClick(PushCampaign message) {
print("This is a push click callback from native to flutter. Payload " +
message.toString());
}
final MoEngageFlutter _moengagePlugin = MoEngageFlutter();
_moengagePlugin.setUpPushCallbacks(_onPushClick);
Make sure this callback is set as soon as the application is initialized. Preferably in the initState()
of your application widget.
Make sure the callback is set before calling the initialise()
of the MoEngage Plugin.
Payload
NotificationPayload received in the callback is a PushCampaign
instance with the following definition:
class PushCampaign {
String platform;
bool isDefaultAction;
Map<String, dynamic> clickedAction;
Map<String, dynamic> payload;
}
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, rich landing 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 link for knowing the iOS notification payload structure.