Retrieve Unread Messages in Conversations
The IMLib SDK supports retrieving unread messages from specified conversations, enabling apps to jump to the first unread message or display all unread @mentions.
Retrieve the First Unread Message in a Conversation
Get the earliest unread message in a conversation.
Interface
RongCoreClient.getInstance().getTheFirstUnreadMessage(conversationType, targetId, callback);
Parameters
| Parameter | Type | Description |
|---|---|---|
| conversationType | ConversationType | Conversation type |
| targetId | String | Conversation ID |
| callback | IRongCoreCallback.ResultCallback<Message> | Callback interface |
Upon successful retrieval, the callback returns a message object (Message).
Sample Code
ConversationType conversationType = ConversationType.PRIVATE;
String targetId = "Conversation ID";
RongCoreClient.getInstance().getTheFirstUnreadMessage(conversationType, targetId, new ResultCallback<Message>() {
@Override
public void onSuccess(Message message) {
}
@Override
public void onError(IRongCoreEnum.CoreErrorCode e) {
}
});
Retrieve Unread @Mention Messages in a Conversation
tip
- Versions below 5.2.5 only provide the
getUnreadMentionedMessagesmethod withoutcountanddescparameters, returning a maximum of 10 entries per call. - Starting from version 5.2.5,
getUnreadMentionedMessagessupports thecountanddescparameters.
Retrieve the earliest or latest unread @mention messages in a conversation, with a maximum of 100 entries returned.
Interface
RongCoreClient.getInstance().getUnreadMentionedMessages(conversationType, targetId, count, desc, callback);
Parameters
| Parameter | Type | Description |
|---|---|---|
| conversationType | ConversationType | Conversation type |
| targetId | String | Conversation ID |
| count | int | Number of messages. Maximum 100 entries. |
| desc | boolean | true: Retrieve the latest count entries. false: Retrieve the oldest count entries. |
| callback | IRongCoreCallback.ResultCallback<List<Message>> | Callback interface |
Upon successful retrieval, the callback returns a list of message objects (Message).
Sample Code
ConversationType conversationType = ConversationType.PRIVATE;
String targetId = "Conversation ID";
int count = 100;
boolean desc = true;
RongCoreClient.getInstance().getUnreadMentionedMessages(conversationType, targetId, count, desc, new ResultCallback<List<Message>>() {
@Override
public void onSuccess(List<Message> messageList) {
}
@Override
public void onError(IRongCoreEnum.CoreErrorCode e) {
}
});
Retrieve Conversation List with Unread @Mention Messages
tip
This feature is supported starting from version 5.28.0.
Interface
RongCoreClient.getInstance().getUnreadMentionMeConversationList(params, callback);
Parameters
| Parameter | Type | Description |
|---|---|---|
| params | GetUnreadMentionMeConversationListParams | Request parameters |
| callback | IRongCoreCallback.ResultCallback<List<Conversation>> | Callback interface |
GetUnreadMentionMeConversationListParams Properties
| Parameter | Type | Description |
|---|---|---|
| conversationTypes | List<ConversationType> | List of conversation types supported: one-to-one chat, group chat, system, and ultra group. |
| topPriority | boolean | Whether pinned conversations take priority. true returns pinned conversations first; otherwise, results are sorted by conversation time only. |
| timestamp | long | Start time for query (in milliseconds). Pass 0 to query the latest conversations. For subsequent queries, use the conversation time of the last element in the conversations list. |
| count | int | Number of entries to retrieve (valid range: 1-100). |
Sample Code
List<Conversation.ConversationType> types = new ArrayList<>();
types.add(Conversation.ConversationType.PRIVATE);
types.add(Conversation.ConversationType.GROUP);
types.add(Conversation.ConversationType.SYSTEM);
types.add(Conversation.ConversationType.ULTRA_GROUP);
GetUnreadMentionMeConversationListParams params = new GetUnreadMentionMeConversationListParams();
params.setConversationTypes(types);
params.setTopPriority(true);
params.setTimestamp(0);
params.setCount(20);
RongCoreClient.getInstance().getUnreadMentionMeConversationList(params, new IRongCoreCallback.ResultCallback<List<Conversation>>() {
@Override
public void onSuccess(List<Conversation> conversations) {
}
@Override
public void onError(IRongCoreEnum.CoreErrorCode e) {
}
});