会话未读数
获取所有会话未读数
会话未读数指某一个会话中未读消息的数量
危险
- 清除浏览器缓存会导致会话未读数不准确
- 会话未读数为本地操作,换端登录会话未读数不会同步
- 会话消息未读数存储在 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.GROUP];
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.GROUP | 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.GROUP;
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.GROUP | 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.GROUP];
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.GROUP | 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.GROUP;
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 内部会清理未读数,无需用户主动调用)
代码示例
危险
群消息未读数同步必须发送定向消息,参数为 config.userIds
清除端
// 清除未读数
var im = RongIMClient.getInstance();
var conversationType = RongIMLib.ConversationType.GROUP;
var targetId = '群组 ID';
im.clearUnreadCount(conversationType, targetId, {
onSuccess: function () {
// 从消息里获取服务器端时间,以最近一条已读 message 为准
var msg = {
lastMessageSendTime: message.sentTime
};
var isMentioned = false; // @ 消息
var pushContent = null; // Push 显示内容
var pushData = null; // Push 通知时附加信息, 可不填
var config = {
// 群定向消息,仅发送给群中的自己,群内其他用户无需接收。 currentUserId 为当前登录的用户 ID
userIds: ['currentUserId']
}
msg = new RongIMLib.SyncReadStatusMessage(msg);
RongIMClient.getInstance().sendMessage(conversationType, targetId, msg, {
onSuccess: function () {
console.log('发送同步消息成功', message);
},
onError: function () {}
}, isMentioned, pushContent, pushData, null, config);
},
onError: function (errorCode) {}
});
同步端
// 其他端在消息监听中接收到同步消息后,调用清除未读数做更新处理
// 收到同步消息进行未读数清除操作 调用 clearUnreadCount() 成功后不需要再在发送 SyncReadStatusMessage 类型消息。
var conversationType = RongIMLib.ConversationType.GROUP;
var targetId = '群组 ID';
var clearUnreadCount = RongIMClient.getInstance().clearUnreadCount;
clearUnreadCount(conversationType, targetId, {
onSuccess: function () {},
onError: function (errorCode) {}
});