会话未读数
获取所有会话未读数
会话 未读数指某一个会话中未读消息的数量
危险
- 清除浏览器缓存会导致会话未读数不准确
- 会话未读数为本地操作,换端登录会话未读数不会同步
- 会话消息未读数存储在 WebStorage 中, 若浏览器不支持或禁用 WebStorage,未读消息数将不会保存,浏览器页面刷新未读消息数将不会存在
API 参考:getTotalUnreadCount
参数说明
参数 | 类型 | 必填 | 说明 | 最低版本 |
---|---|---|---|---|
callback | Object | 是 | 回调对象 | 2.2.0 |
callback.onSuccess | Function | 是 | 成功回调 | 2.2.0 |
callback.onError | Function | 是 | 失败回调 | 2.2.0 |
conversationTypes | Array | 否 | 会话类型 | 2.9.5 |
includeMuted | Boolean | 否 | 是否包含免打扰会话,默认为:false | 2.9.5 |
代码示例
var conversationTypes = [RongIMLib.ConversationType.SYSTEM];
var callback = {
onSuccess: function(count) {
console.log('获取所有会话未读消息数成功', count);
},
onError: function(error) {
console.log('获取所有会话未读消息数失败', error);
}
};
RongIMClient.getInstance().getTotalUnreadCount(callback, conversationTypes);
获取单个会话未读数
方式一:调用 getUnreadCount
方法来获取会话未读数。
方式二:通过 conversation.unreadMessageCount
获取。
API 参考:getUnreadCount
参数说明
参数 | 类型 | 必填 | 说明 | 最低版本 |
---|---|---|---|---|
conversationType | Number | 是 | 会话类型,系统会话传入 RongIMLib.ConversationType.SYSTEM | 2.2.0 |
targetId | String | 是 | 系统会话 ID | 2.2.0 |
callback | Object | 是 | 回调对象 | 2.2.0 |
callback.onSuccess | Function | 是 | 成功回调 | 2.2.0 |
callback.onError | Function | 是 | 失败回调 | 2.2.0 |
代码示例
var conversationType = RongIMLib.ConversationType.SYSTEM;
var targetId = '系统会话 ID';
var callback = {
onSuccess: function(count) {
console.log('获取指定会话未读消息数成功', count);
},
onError: function(error) {
console.log('获取指定会话未读消息数失败', error);
}
};
RongIMLib.RongIMClient.getInstance().getUnreadCount(conversationType, targetId, callback);
按会话类型获取未读数
API 参考:getConversationUnreadCount
参数说明
参数 | 类型 | 必填 | 说明 | 最低版本 | 废弃版本 |
---|---|---|---|---|---|
conversationTypes | Array | 是 | 会话类型,系统会话传入 RongIMLib.ConversationType.SYSTEM | 2.2.0 | 2.6.0 |
callback | Object | 是 | 回调对象 | 2.2.0 | 2.6.0 |
callback.onSuccess | Function | 是 | 成功回调 | 2.2.0 | 2.6.0 |
callback.onError | Function | 是 | 失败回调 | 2.2.0 | 2.6.0 |
代码示例
var conversationTypes = [RongIMLib.ConversationType.SYSTEM];
var callback = {
onSuccess: function(count) {
console.log('获取指定会话类型总未读消息数成功', count);
},
onError: function(error) {
console.log('获取指定会话类型总未读消息数失败', error);
}
};
RongIMClient.getInstance().getConversationUnreadCount(conversationTypes, callback);
清除单个会话未读数
API 参考:clearUnreadCount
参数说明
参数 | 类型 | 必填 | 说明 | 最低版本 |
---|---|---|---|---|
conversationType | Number | 是 | 会话类型,系统会话传入 RongIMLib.ConversationType.SYSTEM | 2.2.0 |
targetId | String | 是 | 系统会话 ID | 2.2.0 |
callback | Object | 是 | 回调对象 | 2.2.0 |
callback.onSuccess | Function | 是 | 成功回调 | 2.2.0 |
callback.onError | Function | 是 | 失败回调 | 2.2.0 |
代码示例
var conversationType = RongIMLib.ConversationType.SYSTEM;
var targetId = '系统会话 ID';
var callback = {
onSuccess: function() {
console.log('清除指定会话未读消息数成功');
},
onError: function(error) {
console.log('清除指定会话未读消息数失败', error);
}
};
RongIMClient.getInstance().clearUnreadCount(conversationType, targetId, callback);
清除全部会话未读数
最低版本:2.10.4
RongIMClient.getInstance().clearAllUnreadCount()
多端同步未读数
未读消息存在 localStorage 中,未读消息数是针对当前端的未读消息数,服务器不存未读消息数量。
实现方案
本端清除会话未读数后,通过在会话中发送一条同步消息,通知其他端。其他端收取到会话中的同步消息后,调用相应方法清除本地会话未读消息数。
- 本端阅读会话中的消息后,调用 clearUnreadCount() 清除会话未读消息数。
- 清除成功后,在会话中发送 SyncReadStatusMessage 类型消息,同步阅读状态。
- 其他端接收到 SyncReadStatusMessage 类型消息后,调用 clearUnreadCount() 方法,清除本地的会话未读数。(在 v2.10.4 版本之后收到该消息时 sdk 内部会清理未读数,无需用户主动调用)