处理会话未读消息数
您可以使用 IMLib SDK 提供的接口直接获取会话中的未读消息数。具体能力如下:
- 获取所有会话(不含聊天室)中的未读消息总数(
getTotalUnreadCount) - 获取指定会话中的总未读消息数,或指定会话中指定消息类型的总未读消息数,或按会话类型获取总未读消息总数,或指定会话类型是否包含免打扰消息的总未读消息数(
getUnreadCount)
在用户使用您的 App 时,UI 上未读计数可能需要发生变化,此时您可以清除会话中的未读数(clearMessagesUnreadStatus)。
获取所有会话总未读消息数
您可以使用 getTotalUnreadCount 获取所有类型会话(不含聊天室)中未读消息的总数。
接口
Java
RongCoreClient.getInstance().getTotalUnreadCount(callback);
获取成功后,callback 中会返回未读消息数(unReadCount)。
参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
callback | IRongCoreCallback.ResultCallback<Integer> | 回调接口,返回未读消息数(unReadCount) |
示例代码
Java
RongCoreClient.getInstance().getTotalUnreadCount(new IRongCoreCallback.ResultCallback<Integer>() {
@Override
public void onSuccess(Integer unReadCount) {
}
@Override
public void onError(IRongCoreEnum.CoreErrorCode ErrorCode) {
}
});
获取指定会话的总未读消息 数
获取指定会话中的未读消息总数。
接口
Java
RongCoreClient.getInstance().getUnreadCount(conversationType, targetId, callback);
参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
conversationType | ConversationType | 会话类型。不适用于聊天室、超级群。 |
targetId | String | 会话 ID |
callback | IRongCoreCallback.ResultCallback<Integer> | 回调接口 |
获取成功后,callback 中会返回未读消息数(unReadCount)。
示例代码
Java
ConversationType conversationType = ConversationType.PRIVATE;
String targetId = " 会话 Id ";
RongCoreClient.getInstance().getUnreadCount(conversationType, targetId,
new IRongCoreCallback.ResultCallback<Integer>() {
@Override
public void onSuccess(Integer unReadCount) {
}
@Override
public void onError(IRongCoreEnum.CoreErrorCode ErrorCode) {
}
});
获取指定会话中指定消息类型的总消息未读数
提示
该方法在 SDK 5.1.5 版本引入。该方法仅在 RongCoreClient 中提供。
获取指定会话内指定的某一个或多个消息类型的未读数。
接口
Java
RongCoreClient.getInstance().getUnreadCount(targetId, conversationType, objectNames, callback)
参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
targetId | String | 会话 ID。 |
conversationType | ConversationType | 会话类型。不适用于聊天室。 |
objectNames | String[] | 消息类型标识数组。内置消息类型的标识可参见消息类型概述。 |
callback | IRongCoreCallback.ResultCallback | 回调结果。 |
获取成功后,callback 中会返回未读消息数(unReadCount)。
按会话类型获取总未读消息数
提示
- 从 5.20.0 版本开始,支持超级群类型会话未读数,超级群功能需提交工单开启。
获取多个指定会话类型的未读数。
接口
Java
RongCoreClient.getInstance().getUnreadCount(conversationTypes, containBlocked, callback);
参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
conversationTypes | ConversationType [] | 会话类型数组。不适用于聊天室、超级群。 |
containBlocked | boolean | 是否包含消息免打扰的未读消息数。true:包含。false:不包含。 |
callback | IRongCoreCallback.ResultCallback<Integer> | 回调接口 |
获取成功后,callback 中会返回未读消息数(unReadCount)。
示例代码
Java
Conversation.ConversationType[] conversationTypes = {
Conversation.ConversationType.PRIVATE,
Conversation.ConversationType.GROUP
};
boolean containBlocked = true;
RongCoreClient.getInstance().getUnreadCount(conversationTypes, containBlocked,
new IRongCoreCallback.ResultCallback<Integer>() {
@Override
public void onSuccess(Integer unReadCount) {
}
@Override
public void onError(IRongCoreEnum.CoreErrorCode ErrorCode) {
}
});