Track Push & In-App Notifications
Now that you have installed the Mapp Engage SDK and updated the app manifest, you can implement the tracking of push and in-app notification by following the next steps.
In order to track receiving / opening / dismissal of push notifications you need to call the Mapp Intelligence SDK on the receiver, which extends PushDataReceiver:
class MyPushBroadcastReceiver: PushDataReceiver() {
override fun onPushReceived(pushData: PushData?) {
Log.d("APX", "Push received $pushData")
val params = LinkedHashMap<String, String>()
Webtrekk.getInstance().trackCustomEvent("notification received")
}
override fun onPushOpened(pushData: PushData?) {
Log.d("APX", "Push opened $pushData")
Webtrekk.getInstance().trackCustomEvent("notification opened")
}
override fun onPushDismissed(pushData: PushData?) {
Log.d("APX", "Push dismissed $pushData")
Webtrekk.getInstance().trackCustomEvent("notification dismissed")
}
}
JAVA
public class MyPushBroadcastReceiver extends PushDataReceiver {
@Override
public void onPushReceived(PushData pushData) {
Log.d("APX", "Push received " + pushData);
Webtrekk.getInstance().trackCustomEvent("notification received", Collections.emptyMap());
}
@Override
public void onPushOpened(PushData pushData) {
Log.d("APX", "Push opened " + pushData);
Webtrekk.getInstance().trackCustomEvent("notification opened", Collections.emptyMap());
}
@Override
public void onPushDismissed(PushData pushData) {
Log.d("APX", "Push dismissed " + pushData);
Webtrekk.getInstance().trackCustomEvent("notification dismissed", Collections.emptyMap());
}
}
JAVA
Next, For in-app notification tracking, you need to follow step 1 and 2 and include tracking as follows
class YourActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_your)
...
/*
Custom Trigger Events are used to trigger when an In-App message is displayed. Common trigger events are "Open App", "Open Shopping Cart", "Open Inbox/Message Center".
With custom trigger events, you can create events specific to your app. At a minimum, all apps require one Custom Trigger Event. The most common event is Open App.
To create a custom trigger event in Android, include the following call in your app.
*/
Appoxee.instance().triggerDMCCallInApp(this@YourActivity, "EventName")
val inAppInboxCallback = InAppInboxCallback()
inAppInboxCallback.addInAppInboxMessagesReceivedCallback(object :
InAppInboxCallback.onInAppInboxMessagesReceived {
override fun onInAppInboxMessages(richMessages: List<APXInboxMessage>) {
Log.d("messages", "messages = " + richMessages[0].content)
Webtrekk.getInstance()
.trackCustomEvent("in_app_inbox_messages received", emptyMap())
}
override fun onInAppInboxMessage(message: APXInboxMessage) {
Log.d("messages", "messages = " + message.content)
Webtrekk.getInstance()
.trackCustomEvent("in_app_inbox_messages received", emptyMap())
}
})
val inAppCallback = InAppCallback()
inAppCallback.addInAppMessageReceivedCallback { eventName, eventValue ->
Log.d(" eventName = ", eventName)
Log.d(" eventValue = ", eventValue)
Webtrekk.getInstance().trackCustomEvent("in_app_message received", emptyMap())
}
val inAppMessageDismissalCallback = InAppMessageDismissalCallback()
inAppMessageDismissalCallback.addOnInAppMessageDismissalCallback { templateId, eventId, isSendStats ->
Log.d("MainActivity", "onInAppMessageDismissalCallback")
Webtrekk.getInstance().trackCustomEvent("in_app_message dismissed", emptyMap())
}
}
}
JAVA
public class YourActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_your);
...
/*
Custom Trigger Events are used to trigger when an In-App message is displayed. Common trigger events are "Open App", "Open Shopping Cart", "Open Inbox/Message Center".
With custom trigger events, you can create events specific to your app. At a minimum, all apps require one Custom Trigger Event. The most common event is Open App.
To create a custom trigger event in Android, include the following call in your app.
*/
Appoxee.instance().triggerDMCCallInApp(YourActivity.this, "EventName");
InAppInboxCallback inAppInboxCallback = new InAppInboxCallback();
inAppInboxCallback.addInAppInboxMessagesReceivedCallback(new InAppInboxCallback.onInAppInboxMessagesReceived() {
@Override
public void onInAppInboxMessages(List<APXInboxMessage> richMessages) {
Log.d("messages", "messages = " + richMessages.get(0).getContent());
Webtrekk.getInstance().trackCustomEvent("in_app_inbox_messages received", Collections.emptyMap());
}
@Override
public void onInAppInboxMessage(final APXInboxMessage message) {
Log.d("messages", "messages = " + message.getContent());
Webtrekk.getInstance().trackCustomEvent("in_app_inbox_messages received", Collections.emptyMap());
}
});
InAppCallback inAppCallback = new InAppCallback();
inAppCallback.addInAppMessageReceivedCallback(new InAppCallback.onInAppEventReceived() {
@Override
public void onInAppEvent(String eventName, String eventValue) {
Log.d(" eventName = ", eventName);
Log.d(" eventValue = ", eventValue);
Webtrekk.getInstance().trackCustomEvent("in_app_message received", Collections.emptyMap());
}
});
InAppMessageDismissalCallback inAppMessageDismissalCallback = new InAppMessageDismissalCallback();
inAppMessageDismissalCallback.addOnInAppMessageDismissalCallback(new InAppMessageDismissalCallback.onInAppMessageDismissalCallback() {
@Override
public void onInAppMessageDismissalCallback(int templateId, String eventId, boolean isSendStats) {
Log.d("MainActivity", "onInAppMessageDismissalCallback");
Webtrekk.getInstance().trackCustomEvent("in_app_message dismissed", Collections.emptyMap());
}
});
}
}
JAVA