跳到主要内容

获取远端会话

注意

  • Web 端不具备持久化的数据存储能力,无法在本地持久化存储历史消息记录与会话列表,因此需要从融云服务端获取数据。从远端获取单群聊历史消息要求您已在控制台 IM 服务管理页面为当前使用的 App Key 开启单群聊消息云端存储服务。IM 旗舰版IM 尊享版可开通该服务。具体功能与费用以融云官方价格说明页面及计费说明文档为准。
  • 获取远端会话必须在调用 RongIMLib.connect() 并且成功建立连接之后执行。
  • 服务器会话列表存储上限为 1000 条会话,会话存储有效期与单群聊消息云端存储的有效期一致,默认为 6 个月。

获取会话列表

提示

该接口在 Electron 平台调用时会忽略参数传值,固定返回所有会话列表。建议 Electron 平台客户考虑使用其他获取会话列表的接口。

调用 getConversationList 获取会话,返回 IAReceivedConversation 列表。

const startTime = 0;
const count = 10;
const order = 0;

RongIMLib.getConversationList({
count: count,
startTime: startTime,
order: order
}).then(res => {
if (res.code === 0) {
console.log(res.code, res.data)
} else {
console.log(res.code, res.msg)
}
})

服务端按照会话最后一条消息的时间进行排序。获取方式如下:

  • 如需获取最新的会话列表,应设置 order0startTime0,表示以当前时间点为分界,查询早于当前时间的会话,接口将返回最新的会话列表。
  • 如需获取服务端最早的会话,应设置 order1startTime0,此时 startTime = 0 表示从服务端最早一条会话开始查询,获取指定数量会话,接口将返回服务端 1000 条会话中最早的会话列表。
  • 如果分页获取会话,第二次应传入返回结果数组中最后一条数据的 IAReceivedConversationlatestMessagesendTime
参数类型必填默认值说明
countNumber300会话列表数量,默认值 300,最大值 1000
startTimeNumber0获取会话的时间边界,为精确到毫秒的时间戳,与 order 配合使用。分页获取时,第二次可传入返回结果数组中最后一条数据的 IAReceivedConversationlatestMessagesendTime
orderNumber0获取会话的方向。0 表示获取早于时间边界(startTime)的会话。1 表示获取晚于时间边界(startTime)的会话。

返回结果中的 IAReceivedConversation 属性说明:

字段名类型说明
conversationTypeNumber会话类型
targetIdString接收方的 userId
unreadMessageCountNumber当前会话的未读消息数
latestMessageObject会话中最后一条消息
hasMentionedBoolean是否包含 @ 自己的消息,此数据仅在 conversationTypeConversationType.GROUP 时有效
mentionedInfoMentionedInfo@ 信息。
notificationStatusNumber当前会话免打扰状态,web 平台在 5.3.0 版本废弃该字段,ELectron 平台在 5.8.4 版本废弃该字段,请使用 notificationLevel。
notificationLevelNotificationLevel当前会话免打扰级别, web 平台在 5.3.0 版本支持, ELectron 平台在 5.8.4 版本支持
isTopBoolean当前会话免置顶状态
lastUnreadTimeNumber会话中消息的最后未读时间
draftString草稿信息,5.9.0 版本新增

获取指定会话

调用 getConversation 获取指定会话 IAReceivedConversation

提示

通过该方法获取的会话可能并不存在于当前的会话列表中,此处只作为功能性封装语法糖。

const conversationType = RongIMLib.ConversationType.PRIVATE;
const targetId = '接收方的 userId';

RongIMLib.getConversation({
conversationType,
targetId,
}).then(res => {
if (res.code === 0) {
console.log(res.code, res.data)
} else {
console.log(res.code, res.msg)
}
})
参数类型必填说明
targetIdString接收方的 userId
conversationTypeNumber会话类型,参考 ConversationType

获取置顶会话列表

调用 getTopConversationList 获取置顶会话列表。

提示

从 SDK 5.6.0 开始支持该接口。注意:该接口在 Web 平台返回数据中将不包含 latestMessage 字段。

const conversationTypes = [RongIMLib.ConversationType.PRIVATE, RongIMLib.ConversationType.GROUP, RongIMLib.ConversationType.SYSTEM];

RongIMLib.getTopConversationList(conversationTypes).then(res => {
if (res.code === 0) {
console.log(res.code, res.data)
} else {
console.log(res.code, res.msg)
}
})
参数类型必填说明
conversationTypesConversationType[]会话类型,参考 ConversationType, 默认是全部会话类型

获取未读会话列表

提示

从 SDK 5.7.0 开始支持该接口。注意:该接口在 Web 平台返回数据中将不包含 latestMessage 字段。

调用 getUnreadConversationList 获取含有未读消息的会话列表。

const conversationTypes = [RongIMLib.ConversationType.PRIVATE, RongIMLib.ConversationType.GROUP, RongIMLib.ConversationType.SYSTEM];

RongIMLib.getUnreadConversationList(conversationTypes).then(res => {
if (res.code === 0) {
console.log(res.code, res.data)
} else {
console.log(res.code, res.msg)
}
})
参数类型必填说明
conversationTypesConversationType[]会话类型。参考 ConversationType, 仅支持 单聊、群聊、系统会话类型