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.

Install Netmera Notification Inbox

To integrate the NetmeraNotificationInbox, add it to your Podfile:

pod 'NetmeraNotificationInbox'

Install the dependency and proceed with integration.

Filter and Fetch Notification

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.

Define Inbox Manager

var inboxManager: NetmeraInboxManager?

Create a Filter

Define the properties to filter notifications, such as status, categories, and page size.

let filter = NetmeraInboxFilter(status: status,
                                pageSize: 10,
                                shouldIncludeExpiredObjects: true,
                                categories: ["category_names"]) // Optional

Initialize Inbox Manager

self.inboxManager = Netmera.inboxManager(with: filter)

Fetch the First Page

Request the list of matching push notifications.

inboxManager?.inbox(callback: { result in
	// Handle the result
})

Sample Code

// 1. Define the inbox manager
var inboxManager: NetmeraInboxManager?

// 2. Create a filter for fetching notifications
let filter = NetmeraInboxFilter(
    status: status, // e.g., .unread, .read, .deleted
    pageSize: 10, // Number of notifications per page
    shouldIncludeExpiredObjects: true, // Include expired notifications
    categories: ["category_names"] // Optional: Filter by categories
)

// 3. Initialize the inbox manager
self.inboxManager = Netmera.inboxManager(with: filter)

Update Notification Status

Push notifications can have three statuses:

  • Unread

  • Read

  • Deleted

You can update the status of notifications to allow users to mark messages as read, unread, or deleted.

Examples:

Update the status of a single notification:

inboxManager?.updateStatus(status, for: [object]) { result in
    // Handle status update
}

Update the status of all notifications:

inboxManager?.updateStatusForAllPushObjects(status) { result in
    // Handle status update
}

Fetch More Pages

If there are more notifications than the defined page size, fetch the next page:

inboxManager?.nextPage(callback: { result in
	// Handle the next page
})

All fetched notifications are stored in inbox.objects, and hasNextPage checks if more pages are available.

Incremental Fetching

The NetmeraInbox instance returned from -fetchInboxUsingFilter:completion: keeps the list of fetched notifications in inbox.objects. As you fetch more pages, new notifications are added to this list.

For example, if you set a page size of 10 and fetch 3 pages, inbox.objects will contain all 30 notifications from the 3 pages. This allows you to display the entire list of notifications in a table or collection view.

Error Handling

If the operation fails, the completion block will be triggered with an error describing the failure. If there are no more pages to fetch, the method will immediately call the completion block with an appropriate error.

Checking if All Pages are Fetched

You can check if there are more pages to fetch by using the hasNextPage property of the NetmeraInbox instance. If it returns false, it means all pages have been fetched.

Push Notification Counts

To get the total count of notifications based on status:

self.inboxManager?.count(for: NetmeraInboxStatus.read)

This method provides the count of notifications in the specified status.

Last updated

Was this helpful?