Netmera Developer Guide
Netmera Docs
  • Netmera Developer Guide
  • Platforms
    • iOS
      • New iOS (Swift)
        • SDK Integration
        • Push Notifications
          • Delegate Methods
          • Widget and In-App Messages
          • Media Push
          • Carousel, Slider and Thumbnail Push
        • Deep Linking
          • Custom Deep Links
        • Sound & Vibration
        • Push Inbox
        • Events
        • Geofence & Location
        • User Attributes & Preferences
        • Advertising ID
        • Changelog
      • Former iOS (Objective-C)
        • SDK Integration
        • Push Notifications
          • Delegate Methods
          • Push Payload Receivers
          • Widget and In-App Messages
          • Customizing In-App Messages
          • Media Push
          • Carousel, Slider and Thumbnail Push
          • Custom Web View Presentation
          • Push Icon
        • Live Activities
        • Deep Linking
          • Custom Deep Links
        • Sound & Vibration
        • Push Inbox
        • Events
        • Geofence & Location
        • User Attributes & Preferences
        • Data Transfer
        • Advertising ID
        • SSL Pinning
        • Changelog
    • Android
      • SDK Integration
        • Huawei Integration
        • Huawei Message Receipt
        • Android Integration FAQs
      • Push Notifications
        • Widget and In-App Messages
        • Push Callbacks
        • Custom Web View Presentation
        • Push Icon
      • Deep Linking
        • Custom Deep Links
      • Sound & Vibration
      • Push Inbox
      • Events
      • Geofence & Location
        • Background Location Permission
      • User & Attributes
      • Data Transfer
      • Advertising ID
      • App Tracking
      • SSL Pinning
      • Changelog
    • Web
      • SDK Setup
        • Self-Hosted SDK Setup
      • Mobile Web Push for iOS
      • Deep Linking
        • Custom Deep Links
      • Events
      • User & Attributes
    • React Native
      • SDK Integration
      • Push Notifications
        • Widget and In-App Messages
        • Push Callbacks
      • Deep Linking
        • Custom Deep Links
      • Sound & Vibration
      • Push Inbox
      • Events
      • Geofence & Location
      • User & Attributes
      • Changelog
    • Flutter
      • SDK Integration
      • Push Notifications
        • Push Notification Permissions
        • Widget and In-App Messages
        • Flutter iOS Media Push
      • Deep Linking
        • Custom Deep Links
      • Sound & Vibration
      • Push Inbox
      • Events
      • Geofence & Location
      • User & Attributes
      • SSL Pinning
      • Changelog
    • Cordova
      • SDK Integration
      • Push Notifications
      • Sound & Vibration
      • Push Inbox
      • Events
      • User & Attributes
    • Unity
      • SDK Integration
      • Sound & Vibration
      • Events
      • User & Attributes
      • Changelog
  • Integrated Modules
    • Optimove
    • Adjust
    • Mixpanel
    • IYS Integration
    • VIA Integration
      • Short URL Consent Requests
      • OTP Consent Requests
        • OTP Confirmation Completion
      • VIA Email Rejection Link Generation
      • ETK Rejection via SMS
  • API Documentation
    • REST API
      • Setup
      • Notifications
      • Events
      • User & Device Management
      • Inbox Feature
      • GDPR
      • Error Responses
  • FAQs
    • Push Notifications FAQs
Powered by GitBook
On this page
  • Initializing Netmera SDK with Callbacks
  • Step 1: Initialize Netmera SDK with Callbacks
  • Step 2: Implement a Receiver Class
  • In-App Action Calllback
  • Push Action Calllback
  • Widget Callback Methods

Was this helpful?

  1. Platforms
  2. Android
  3. Push Notifications

Push Callbacks

PreviousWidget and In-App MessagesNextCustom Web View Presentation

Last updated 2 months ago

Was this helpful?

Initializing Netmera SDK with Callbacks

When initializing Netmera, you can register different types of callbacks:

  1. In-App Message Callbacks (.nmInAppMessageActionCallbacks())

  2. Push Action Callbacks (.nmPushActionCallbacks())

  3. Web Widget Callbacks (.nmWebWidgetCallbacks())

Step 1: Initialize Netmera SDK with Callbacks

During the initialization of Netmera, specify which callbacks your app should handle and include the callback lines during the initialization step ().

  • .nmInAppMessageActionCallbacks()

  • .nmPushActionCallbacks()

  • .nmWebWidgetCallbacks()

override fun onCreate() {
    super.onCreate()

    val configBuilder = NetmeraConfiguration.Builder()
        .apiKey(apiKey)
        .firebaseSenderId(PropertiesUtil.gcmSenderId)
        .huaweiSenderId(PropertiesUtil.hmsSenderId) // For Huawei services
        .logging(true) // Enables Netmera logs in Logcat
        .nmInAppMessageActionCallbacks(NGInAppMessageActionCallbacks()) // In-App Message Callback
        .nmPushActionCallbacks(NGPushActionCallbacks()) // Push Action Callback
        .nmWebWidgetCallbacks(NGWebWidgetCallbacks()) // Web Widget Callback

    Netmera.init(configBuilder.build(this))
}

Step 2: Implement a Receiver Class

  • Extend NetmeraPushBroadcastReceiver and override the necessary callback methods. Avoid using Toast messages in the production environment.

In-App Action Calllback

  • To trigger an in-app callback, select the banner style in the Netmera control panel.

  • The pop-up style will not trigger the callback.

inner class NGInAppMessageActionCallbacks : NMInAppMessageActionCallbacks {
    private val TAG = "sample"

    fun onInAppMessageShown(context: Context?, inAppMessage: NetmeraInAppMessage) {
        Toast.makeText(
            context,
            "onInAppMessageShown triggered :: " + inAppMessage.getId(),
            Toast.LENGTH_SHORT
        ).show()
        Log.i(TAG, "onInAppMessageShown triggered :: " + inAppMessage.getId())
    }

    fun onInAppMessageOpen(context: Context?, inAppMessage: NetmeraInAppMessage) {
        Toast.makeText(
            context,
            "onInAppMessageOpen triggered :: " + inAppMessage.getId(),
            Toast.LENGTH_SHORT
        ).show()
        Log.i(TAG, "onInAppMessageOpen triggered :: " + inAppMessage.getId())
    }

    fun onInAppMessageDismissed(context: Context?, inAppMessage: NetmeraInAppMessage) {
        Toast.makeText(
            context,
            "onInAppMessageDismissed triggered :: " + inAppMessage.getId(),
            Toast.LENGTH_SHORT
        ).show()
        Log.i(TAG, "onInAppMessageDismissed triggered :: " + inAppMessage.getId())
    }
}
public class NGInAppMessageActionCallbacks implements NMInAppMessageActionCallbacks {

    private final String TAG = "sample";

    @Override
    public void onInAppMessageShown(Context context, NetmeraInAppMessage inAppMessage) {
        Toast.makeText(
            context,
            "onInAppMessageShown triggered :: " + inAppMessage.getId(),
            Toast.LENGTH_SHORT
        ).show();
        Log.i(TAG, "onInAppMessageShown triggered :: " + inAppMessage.getId());
    }

    @Override
    public void onInAppMessageOpen(Context context, NetmeraInAppMessage inAppMessage) {
        Toast.makeText(
            context,
            "onInAppMessageOpen triggered :: " + inAppMessage.getId(),
            Toast.LENGTH_SHORT
        ).show();
        Log.i(TAG, "onInAppMessageOpen triggered :: " + inAppMessage.getId());
    }

    @Override
    public void onInAppMessageDismissed(Context context, NetmeraInAppMessage inAppMessage) {
        Toast.makeText(
            context,
            "onInAppMessageDismissed triggered :: " + inAppMessage.getId(),
            Toast.LENGTH_SHORT
        ).show();
        Log.i(TAG, "onInAppMessageDismissed triggered :: " + inAppMessage.getId());
    }
}

Push Action Calllback

inner class NGPushActionCallbacks : NMPushActionCallbacks {

    fun onPushRegister(
        context: Context?, 
        gcmSenderId: String?, 
        pushToken: String?
    ) {
        Log.v("sample", "onPushRegister")
        // Example: PushRegisterIdlingResource.registeredToPush();
        // Example: EventBus.getDefault().postSticky(GCMRegistrationEvent(pushToken));
    }

    fun onPushReceive(
        context: Context?,
        bundle: Bundle?,
        netmeraPushObject: NetmeraPushObject?
    ) {
        Log.v("sample", "onPushReceive")
        EventBus.getDefault().post(PushReceivedEvent(netmeraPushObject))
    }

    fun onPushOpen(
        context: Context?,
        bundle: Bundle?,
        netmeraPushObject: NetmeraPushObject?
    ) {
        Log.v("sample", "onPushOpen")
    }

    fun onPushDismiss(
        context: Context?,
        bundle: Bundle?,
        netmeraPushObject: NetmeraPushObject?
    ) {
        Log.v("sample", "onPushDismiss")
    }

    fun onPushButtonClicked(
        context: Context?,
        bundle: Bundle?,
        netmeraPushObject: NetmeraPushObject?
    ) {
        Log.v("sample", "onPushButtonClicked")
    }

    // ==> For Netmera SDK versions 3.9.1 and above
    fun onCarouselObjectSelected(
        context: Context?,
        bundle: Bundle?,
        netmeraPushObject: NetmeraPushObject?,
        selectedIndex: Int,
        netmeraCarouselObject: NetmeraCarouselObject?
    ) {
        Log.v("sample", "onCarouselObjectSelected")
    }
}
public class NGPushActionCallbacks implements NMPushActionCallbacks {

    @Override
    public void onPushRegister(Context context, String gcmSenderId, String pushToken) {
        Log.v("sample", "onPushRegister");
        // Example: PushRegisterIdlingResource.registeredToPush();
        // Example: EventBus.getDefault().postSticky(new GCMRegistrationEvent(pushToken));
    }

    @Override
    public void onPushReceive(
        Context context,
        Bundle bundle,
        NetmeraPushObject netmeraPushObject
    ) {
        Log.v("sample", "onPushReceive");
        // Example: EventBus.getDefault().post(new PushReceivedEvent(netmeraPushObject));
    }

    @Override
    public void onPushOpen(
        Context context,
        Bundle bundle,
        NetmeraPushObject netmeraPushObject
    ) {
        Log.v("sample", "onPushOpen");
    }

    @Override
    public void onPushDismiss(
        Context context,
        Bundle bundle,
        NetmeraPushObject netmeraPushObject
    ) {
        Log.v("sample", "onPushDismiss");
    }

    @Override
    public void onPushButtonClicked(
        Context context,
        Bundle bundle,
        NetmeraPushObject netmeraPushObject
    ) {
        Log.v("sample", "onPushButtonClicked");
    }

    @Override // ==> For Netmera SDK versions 3.9.1 and above
    public void onCarouselObjectSelected(
        Context context,
        Bundle bundle,
        NetmeraPushObject netmeraPushObject,
        int selectedIndex,
        NetmeraCarouselObject netmeraCarouselObject
    ) {
        Log.v("sample", "onCarouselObjectSelected");
    }
}

Widget Callback Methods

  • Implement the NMWebWidgetCallbacks interface and override the onDeeplinkTriggered() and onOpenUrlTriggered() methods.

Netmera Panel Settings:

  • Select "Widget" Style: Ensure the widget is set to "Widget" style in the Netmera panel to trigger the callback.

  • Choosing "Manage App": If the action should be handled within the app, select "Manage App" when assigning an action in "Create New Widget." Without this, the SDK will handle it, but the callback won't trigger.

inner class NGWebWidgetCallbacks : NMWebWidgetCallbacks {

    override fun onDeeplinkTriggered(deeplink: String) {
        Log.i("NetmeraApp", "Deeplink was triggered and should be handled by app. :: $deeplink")
    }

    override fun onOpenUrlTriggered(url: String) {
        Log.i("NetmeraApp", "OpenUrl was triggered and should be handled by app. :: $url")
    }

    override fun onWebWidgetShown(url: String) {
        Log.i("NetmeraApp", "WebWidget shown :: $url")
    }

    override fun onWebWidgetDismiss(url: String) {
        Log.i("NetmeraApp", "WebWidget dismiss :: $url")
    }
}
public class NGWebWidgetCallbacks implements NMWebWidgetCallbacks {

    @Override
    public void onDeeplinkTriggered(String deeplink) {
        Log.i("NetmeraApp", "Deeplink was triggered and should be handled by app. :: " + deeplink);
    }

    @Override
    public void onOpenUrlTriggered(String url) {
        Log.i("NetmeraApp", "OpenUrl was triggered and should be handled by app. :: " + url);
    }

    @Override
    public void onWebWidgetShown(String url) {
        Log.i("NetmeraApp", "WebWidget shown :: " + url);
    }

    @Override
    public void onWebWidgetDismiss(String url) {
        Log.i("NetmeraApp", "WebWidget dismiss :: " + url);
    }
}
Manage App Chosen
Step 5: Initialize Netmera SDK