Track Push & In-App Notifications
    • 4 Minutes to read
    • Dark
      Light

    Track Push & In-App Notifications

    • Dark
      Light

    Article summary

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


    Was this article helpful?

    What's Next