Track Push & In-App Notifications

Prev Next

Once the Mapp Engage SDK is installed and your app manifest is updated, you can implement tracking for push and in-app notifications. The following steps guide you through tracking events such as receiving, opening, and dismissing notifications.

Push Notification Tracking

To track push notifications (received, opened, dismissed), implement the following code in your PushDataReceiver class. The example below uses the Mapp Intelligence SDK for tracking:

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")
   }
}
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());
   }
}

In-App Notification Tracking

For in-app notification tracking, integrate tracking for different notification events:

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())
       }
   }
}
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());
           }
       });
   }
}