App Inbox Messaging

Integrate App Inbox Messaging with Antsomi Android SDK to enhance user engagement in your app

Antsomi App Inbox Messaging feature allows you to engage and communicate with your users effectively through notifications within your mobile application. App Inbox messages provide a seamless way to deliver timely and personalized information to your users. With this feature, you can enhance user engagement, promote important updates, and tailor your communication based on user behavior and preferences.

Important

Before continuing, please ensure that you've added the Antsomi Android SDK to your app.

1. Configure App Inbox

In your MainActivity, after initializing the Antsomi SDK instance, you can init the Antsomi App Inbox by following:

import com.antsomi.AntsomiSdk;
import com.antsomi.AppInbox.AppInbox;

public class MainActivity {
    // ... other fields and methods

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        
        // Init Antsomi App Inbox instance
        try {
            String destinationId = "8987794";
        
            AppInbox appInbox = AntsomiSdk.getInstanceAppInbox();
            appInbox.init(destinationId, AppInbox.AUDIENCE_TYPE_VISITOR);
        } catch (Exception e) {
            Log.e(TAG, e.getMessage(), e);
        }
    }
}

To effectively configure Antsomi App Inbox Messaging, you'll need to define two essential parameters: destinationId and audienceType. The table below provides a quick overview of each parameter and its purpose.

FieldData TypeDescription

destinationID

String

A unique identifier specifying the message destination.

audienceType

AppInbox enum

  • AUDIENCE_TYPE_CUSTOMER

  • AUDIENCE_TYPE_VISITOR

A classification parameter for targeted messaging. Each destinationID can target one audieneceType only.

If you don't know how to get your Destination ID, refer to this document.

2. App Inbox APIs

After configuring the Antsomi App Inbox, you're ready to harness the power of the following APIs to manage and deliver messages effectively. These APIs empower you to organize messages into categories, retrieve messages, access specific messages by their unique identifiers, and control message statuses, enhancing your ability to engage with users through the App Inbox.

Get a List of Message Categories

When App Inbox messages are delivered via Antsomi, they are categorized into one or multiple catalogs based on their content and relevance. This API allows you to retrieve these categorized catalogs, efficiently organizing and presenting messages to users, enhancing their overall messaging experience within your mobile app.

To retrieve a list of message categories, you can use the following function:

import com.antsomi.APICallback;
import com.antsomi.AntsomiSdk;
import com.antsomi.AppInbox.AppInbox;
import com.antsomi.AppInbox.Catalog;

public class InboxActivity {
    // ... other fields and methods
    private List<Catalog> catalogs;

    @Override
    protected void onStart() {
        super.onStart();

        try {
            AntsomiSdk antsomiSdk = AntsomiSdk.getInstance();
            AppInbox appInbox = AntsomiSdk.getInstanceAppInbox();
            
            appInbox.getAllLabels(new APICallback<List<Catalog>>() {
                @Override
                public void onResponse(List<Catalog> response) {
                    // Set activity fields
                    this.catalogs = response;
                }

                @Override
                public void onFailure(Throwable t) {
                    Log.e(TAG, t.getMessage(), t);
                }
            });
        } catch (IllegalStateException e) {
            Log.e(TAG, e.getMessage(), e);
        }
    }
}

The Catalog object is a structured data container that represents a message category within the Antsomi App Inbox. Here's a brief description of the key attributes within the Catalog object:

FieldData TypeDescription

catalogId

String

A unique identifier for the message category.

catalogName

String

The name or title of the category.

To illustrate, look at the sample result below, showcasing a list of Catalogs retrieved from the API. In a real app scenario, this information is typically presented to users on a mobile app screen, ensuring seamless message organization and access.

Get a List of Messages

The Get List Messages API allows you to retrieve a comprehensive list of messages within your Antsomi App Inbox.

To retrieve a list of messages, you can use the following function:

import com.antsomi.APICallback;
import com.antsomi.AntsomiSdk;
import com.antsomi.AppInbox.AppInbox;
import com.antsomi.AppInbox.MessageInbox;

public class InboxActivity {
    // ... other fields and methods
    private List<Catalog> catalogs;
    private List<MessageInbox> messages;
    private int page;

    @Override
    protected void onStart() {
        super.onStart();

        try {
            AntsomiSdk antsomiSdk = AntsomiSdk.getInstance();
            AppInbox appInbox = AntsomiSdk.getInstanceAppInbox();
            
            appInbox.setPageLimit(20);
            appInbox.getListNotification(Collections.emptyList(), page, new APICallback<List<MessageInbox>>() {
                @Override
                public void onResponse(List<MessageInbox> response) {
                    messages = response;
                }

                @Override
                public void onFailure(Throwable t) {
                    Log.e(TAG, t.getMessage(), t);
                }
            });
        } catch (IllegalStateException e) {
            Log.e(TAG, e.getMessage(), e);
        }
    }
}

This API can be further customized with a filter parameter, which accepts a list of catalog IDs obtained from the previous Get List of Message Categories API.

import com.antsomi.APICallback;
import com.antsomi.AntsomiSdk;
import com.antsomi.AppInbox.AppInbox;
import com.antsomi.AppInbox.Catalog;
import com.antsomi.AppInbox.MessageInbox;

public class InboxActivity {
    // ... other fields and methods
    private List<Catalog> catalogs;
    private List<MessageInbox> messages;
    private int page;

    @Override
    protected void onStart() {
        super.onStart();

        try {
            AntsomiSdk antsomiSdk = AntsomiSdk.getInstance();
            ArrayList<String> catalogIds = new ArrayList<>();
            
            for (int i = 0; i < catalogs.toArray().length; i++) {
                catalogIds.add(catalogs.get(i).getCatalogId());
            }

            AppInbox appInbox = AntsomiSdk.getInstanceAppInbox();
            appInbox.setPageLimit(20);
            appInbox.getListNotification(catalogIds, page, new APICallback<List<MessageInbox>>() {
                @Override
                public void onResponse(List<MessageInbox> response) {
                    messages = response;
                }

                @Override
                public void onFailure(Throwable t) {
                    Log.e(TAG, t.getMessage(), t);
                }
            });
        } catch (IllegalStateException e) {
            Log.e(TAG, e.getMessage(), e);
        }
    }
}

The MessageInboxobject is a structured data container that represents a message category within the Antsomi App Inbox. Here's a brief description of the key attributes within the MessageInbox object:

FieldData TypeDescription

itemId

String

The unique ID of each message.

buttonLabel1

String

The label of the first button is associated with the message.

buttonAppUrl1

String

The URL or action associated with the first button can lead to a specific destination or action when clicked.

buttonLabel2

String

The label of the second button associated with the message (if applicable).

buttonAppUrl2

String

The URL or action associated with the second button can lead to a specific destination or action when clicked (if applicable).

imageUrl

String

The URL of the message's cover image.

heading

String

The heading or title of the message.

content

String

The text content of the message.

templateId

String

The ID of the message template. Messages can fall into one of three templates:

  • announcements with no buttons

  • coupon with one button

  • order_verified with two buttons

catalogIds

List<String>

A list of Category IDs to which this message has been categorized.

status

MessageStatus enum

  • UNREAD

  • READ

  • DELETE

The status of the message.

dateCreated

String

The timestamp indicates when the message was created.

lastUpdated

String

The timestamp indicates the most recent update to the message.

expireDate

String

The timestamp indicates when the message is set to expire.

To provide a visual representation of the Get List Messages API's functionality, consider the examples below. The first illustrates a list of messages retrieved from the API without any filtering. In contrast, the second example demonstrates the API's advanced filtering capabilities, resulting in a tailored list of messages associated with specific catalogs.

Get a Message by ID

The Get a Message by ID API serves as a valuable tool to retrieve a specific message from your Antsomi App Inbox. By supplying the unique identifier of the desired message, you can access its content and details with ease.

To retrieve a message using its ID, you can use the following function:

import com.antsomi.APICallback;
import com.antsomi.AntsomiSdk;
import com.antsomi.AppInbox.AppInbox;
import com.antsomi.AppInbox.MessageInbox;

public class InboxDetailActivity {
    // ... other fields and methods
    private String messageId;
    private MessageInbox message;

    @Override
    protected void onStart() {
        super.onStart();

        try {
            AntsomiSdk antsomiSdk = AntsomiSdk.getInstance();
            AppInbox appInbox = AntsomiSdk.getInstanceAppInbox();
            
            appInbox.getDetailMessage(messageId, new APICallback<List<MessageInbox>>() {
                @Override
                public void onResponse(MessageInbox response) {
                    message = response;
                }

                @Override
                public void onFailure(Throwable t) {
                    Log.e(TAG, t.getMessage(), t);
                }
            });
        } catch (IllegalStateException e) {
            Log.e(TAG, e.getMessage(), e);
        }
    }
}

To illustrate this API's functionality, refer to the example below, showcasing a retrieved message based on its unique ID.

Change a Message status

With the 'Update Message Status' API, you can toggle a message's status between read and unread, allowing for precise control over how messages are presented to users.

To modify a message status, simply call this function:

import com.antsomi.APICallback;
import com.antsomi.AntsomiSdk;
import com.antsomi.AppInbox.AppInbox;
import com.antsomi.AppInbox.Catalog;
import com.antsomi.AppInbox.MessageInbox;

public class InboxActivity {
    // ... other fields and methods
    private List<Catalog> catalogs;
    
    private List<MessageInbox> messages;
    private List<String> selectedMessagedIds;
    
    private int page;

    protected void handleUpdateStatusMessage() {
        try {
            AntsomiSdk antsomiSdk = AntsomiSdk.getInstance();            
            ArrayList<String> catalogIds = new ArrayList<>();
            
            for (int i = 0; i < catalogs.toArray().length; i++) {
                catalogIds.add(catalogs.get(i).getCatalogId());
            }

            AppInbox appInbox = AntsomiSdk.getInstanceAppInbox();
            appInbox.updateMessage(selectedMessagedIdseIds, MessageInbox.MessageStatus.READ);
        } catch (IllegalStateException e) {
            Log.e(TAG, e.getMessage(), e);
        }
    }
}

To illustrate the functionality of this API, please refer to the example below, which showcases the process of updating a message's status from read(without the blue dot indicator) to unread(with the blue dot indicator) or vice versa.

Incorporate Antsomi's App Inbox Messaging to elevate your mobile app's communication strategy. With powerful APIs and customization options, you can deliver personalized, engaging messages tailored to your users' preferences.

Last updated