Message Receipts

Overview#

Message receipts is a feature which allows users to know the status of the sent messages as well as the delivered and read time for the messages. The chat app users are well informed about the status of the sent messages.

info

To obserserve message's sent, delivered, read status refer the message callback listeners.

You need to update the ongoing chat user jid always whenever you are entering/exiting the chat window of user by using below method. it is used by sdk internally for receipts.

In activity/fragment onResume, set the user jid as ongoing chat user.

ArgumentTypeDescription
JIDStringjid of the chat user
@Override
public void onResume() {
super.onResume();
ChatManager.setOnGoingChatUser(JID);
}

Then, in activity/fragment onPause, clear the ongoing chat user.

@Override
public void onPause() {
super.onPause();
ChatManager.setOnGoingChatUser("");
}

Mark messages as delivered#

You don't need to send the delivery receipts explicitly, it will be automatically sent by the sdk.

Mark messages as read#

Once the user reads the messages of user B or entered into the chat window of user B, you can mark the messages as read by using the below method. In this case user B's jid will be passed to the below method. Then read receipts will be managed by sdk. sdk will utilise the ongoing chat user jid which is set by this method ChatManager.setOnGoingChatUser(jid: String)

ArgumentTypeDescription
JIDStringjid of the chat user
ChatManager.markAsRead(JID);
info

Sdk is having a built-in functions to prepare the JID, Group JID.

Remove unread message separator#

To remove the unread message separator in a chat conversation list call the below method.

FlyMessenger.deleteUnreadMessageSeparatorOfAConversation(JID);
ArgumentTypeDescription
JIDStringJid of the user/group

Single chat message status#

To get the time of sent, delivered and seen status of a message sent by you in a single one to one chat call the below method.

ChatMessageStatusDetail messageStatus = FlyMessenger.getMessageStatusOfASingleChatMessage(MESSAGE_ID);
ArgumentTypeDescription
MESSAGE_IDStringmessage id of the message

Group chat message status#

To get the time odelivered and seen status of a message sent by you in a group chat call the below methods.

Group message delivered list#

To get the list of users to whom a message was successfully delivered call the below method.

GroupManager.getGroupMessageDeliveredToList(MESSAGE_ID,(isSuccess, throwable, data) ->
if(isSuccess){
List<MessageStatusDetail> messageStatusList = (List<MessageStatusDetail>) data.get("data);
// Update the UI
}else{
// Delivered list fetching failed print throwable to find the exception details.
}
});

Refer this doc to know more about MessageStatusDetail Class

info

Only messages sent by the current user will have the options to get delivered and read list.

ArgumentTypeDescription
MESSAGE_IDStringId of a group message
CALLBACKFlyCallbackFlyCallback implemented as lambda expression

Group message read list#

To get the list of users whom are read/seen the message call the below method.

GroupManager.getGroupMessageReadByList(MESSAGE_ID,(isSuccess, throwable, data) ->
if(isSuccess){
List<MessageStatusDetail> messageStatusList = (List<MessageStatusDetail>) data.get("data);
// Update the UI
}else{
// Read list fetching failed print throwable to find the exception details.
}
});
info

Only messages sent by the current user will have the options to get delivered and read list.

ArgumentTypeDescription
MESSAGE_IDStringId of a group message
CALLBACKFlyCallbackFlyCallback implemented as lambda expression

Group message delivered/read status count#

To get the count of statuses for a given message id call the below method.

int messageStatuses = FlyMessenger.getGroupMessageStatusCount(MESSAGE_ID);
ArgumentTypeDescription
MESSAGE_IDStringId of the message

Mark a conversation as read#

By marking a converstaion as read the unread count will be reset and it is considered the message inside the conversation were read by you.

FlyCore.markConversationAsRead(JID_LIST);
ArgumentsTypeDescription
JID_LISTList<String>List of user/group jid

Mark a conversation as unread#

By marking a converstaion as unread it is considered the message inside the conversation were in unread state.

FlyCore.markConversationAsUnread(JID_LIST);
ArgumentsTypeDescription
JID_LISTList<String>List of user/group jid
info

The read/unread flag is available as a property in the name of isConversationUnRead in the RecentChat for a user.