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
  • Push Inbox Overview
  • Filtering Notifications
  • Fetching the First Page
  • Fetching Next Pages
  • Updating Push Notification Status
  • Counting Notifications by Status
  • Message Categories

Was this helpful?

  1. Platforms
  2. Android

Push Inbox

Push Inbox Overview

NetmeraInbox allows you to access and manage previously sent push notifications in an inbox-style interface. You cannot instantiate NetmeraInbox directly; instead, you must obtain an instance through the SDK and use it to interact with push notifications.

Filtering Notifications

Create a NetmeraInboxFilter instance to specify which push notifications to fetch. You can filter by:

  • Status: Read, Unread, or Deleted.

  • Categories: Filter by specific categories.

  • Expired Notifications: Include or exclude expired notifications.

  • Page Size: Number of notifications to fetch per request.

Here is a sample code to determine filtering options:

NetmeraInboxFilter filter = new NetmeraInboxFilter.Builder()
        .pageSize(20) // Default: Integer.MAX_VALUE
        .status(NetmeraPushObject.STATUS_ALL) // Default: NetmeraPushObject.STATUS_READ / NetmeraPushObject.STATUS_UNREAD
        .categories(Arrays.asList("category_1", "category_2")) // Default: null
        .includeExpiredObjects(true) // Default: false
        //create filter object from builder
        .build();

Fetching the First Page

Use Netmera.fetchInbox to retrieve notifications that match the filter:

Netmera.fetchInbox(filter, new NetmeraInbox.NetmeraInboxFetchCallback() {
    @Override 
    public void onFetchInbox(NetmeraInbox netmeraInbox, NetmeraError error) {
        if (error != null) {
            // handle error
            Toast.makeText(context, error.getMessage(), Toast.LENGTH_LONG).show();
            return;
        }
        // Store returned inbox object for future operations
        mInbox = netmeraInbox; // Store inbox object for future use
    }
});

If successful, onFetchInbox will return an inbox object containing push notifications. Otherwise, it will return an error object with failure details.

Filter properties cannot be changed after fetching

To apply new filters, create a new filter object and fetch again:

// Create a new filter and fetch notifications again
NetmeraInboxFilter newFilter = new NetmeraInboxFilter.Builder()
        .status(NetmeraPushObject.STATUS_UNREAD)
        .build();

Netmera.fetchInbox(newFilter, callback);

Fetching Next Pages

Once the first page is retrieved, use mInbox.fetchNextPage() to get additional pages:

if (mInbox.hasNextPage()) {
    mInbox.fetchNextPage(new NetmeraInbox.NetmeraInboxFetchCallback() {
        @Override 
        public void onFetchInbox(NetmeraInbox netmeraInbox, NetmeraError error) {
            // Handle response
        }
    });
}

Calling fetchNextPage() when no additional pages exist will trigger an error.

Updating Push Notification Status

Notifications can have three states:

  • Unread

  • Read

  • Deleted

Use updateStatus to change a notification's status asynchronously:

List<NetmeraPushObject> objectsToDelete = inbox.pushObjects().subList(0, 5);
inbox.updateStatus(objectsToDelete, NetmeraPushObject.STATUS_DELETED,
    new NetmeraInbox.NetmeraInboxStatusCallback() {
        @Override 
        public void onSetStatusInbox(NetmeraError error) {
            if (error != null) {
                // Handle error
            }
        }
});

You can also update the status of all notifications without fetching them:

public static void updateAll(@NetmeraPushObject.InboxStatus final int inboxStatus,
                             final NetmeraInbox.NetmeraInboxStatusCallback callback)

Counting Notifications by Status

Retrieve the count of notifications by status:

inbox.countForStatus(NetmeraPushObject.STATUS_DELETED); // Deleted  
inbox.countForStatus(NetmeraPushObject.STATUS_READ); // Read  
inbox.countForStatus(NetmeraPushObject.STATUS_UNREAD); // Unread  

Message Categories

You can create new message categories in Settings > Message Category in the panel.

Retrieving User Category Preferences

  • This method retrieves a list of category preferences, including the category ID, name, and opt-in status.

  • To update a user’s category preference, provide the category ID and set categoryEnabled to true or false.

Netmera.getUserCategoryPreferenceList(object : NMCategoryPreferenceFetchCallback {
    override fun onSuccess(categoryPreferenceList: MutableList<NMCategoryPreference>) {
        val strBuilder = StringBuilder()
        strBuilder.append("- CATEGORY OPT-IN LIST - \n")
        for (nmCategoryOptIn in categoryPreferenceList) {
            strBuilder.append(nmCategoryOptIn.optInStatus)
                .append(" - ")
                .append(nmCategoryOptIn.categoryId)
                .append(" - ")
                .append(nmCategoryOptIn.categoryName)
                .append("\n")
        }
        binding.categoryList.text = strBuilder.toString()
    }

    override fun onFailure(error: String?) {
        Toast.makeText(this@CategoryOptinActivity, "Error occurred :: $error", Toast.LENGTH_LONG).show();
    }
})
PreviousSound & VibrationNextEvents

Last updated 2 months ago

Was this helpful?