getConversationList
功能介绍
获取会话列表
用户的会话以列表的形式返回,列表中存储的是 V2TimConversation 对象。目前 IM SDK 对会话列表的排序规则为:
该接口获取的会话列表默认已经按照会话对象的 orderKey 做了排序。orderKey 值越大,代表该会话排序越靠前。orderKey 字段是整型数,当发送新消息、接收新消息、设置草稿或置顶会话时,会话被激活,orderKey 字段会增大。
该接口拉取的是本地缓存的会话,如果服务器会话有更新,SDK 内部会自动同步,然后在 V2TimConversationListener 回调告知客户。
本地存储的会话列表没有数量上限。
云端存储的会话列表最大数量为 100。如果您希望扩展此数量,可以升级旗舰版。旗舰版用户可以在控制台配置最高数量为 500。
长时间没有信息变更,该会话在云端最多保存 7 天。如需放宽限制,请 联系我们。
本地存储的会话和云端存储的会话并不总是一致的,如果用户不主动调用 deleteConversation 接口删除本地的会话,该会话就会一直存在。而云端存储的会话最大只会保存 100 条,且对于长时间没有信息变更的会话,云端最多保存 7 天,所以不同的终端本地显示的会话可能会不一样。
参数详解
参数名称 | 参数类型 | 是否必填 | 描述 |
---|---|---|---|
nextSeq | string | 是 | 分页拉取的游标,第一次默认取传 0,后续分页拉传上一次分页拉取成功回调里的 nextSeq |
count | number | 是 | 分页拉取的个数,一次分页拉取不宜太多,会影响拉取的速度,建议每次拉取 100 个会话 |
返回模板
V2TimValueCallback<{
nextSeq?: string;
isFinished?: boolean;
conversationList?: V2TimConversation[];
}>
{
code : number
desc : string
data : {
conversationList : V2TimConversation[]//此次拉取到的消息列表
isFinished : boolean//是否拉取完
nextSeq : string//后续分页拉取的游标
}
}
返回值详解
名称 | 数值类型 | 描述 |
---|---|---|
code | number | 请求结果错误码 |
desc | string | 请求结果描述符 |
data | { nextSeq?: string; isFinished?: boolean; conversationList?: V2TimConversation[]; } | 此次拉取到的消息信息 |
代码示例
import { TencentImSDKPlugin } from 'react-native-tim-js'; //添加会话到一个会话分组
//获取会话列表
const getConversationListRes = await TencentImSDKPlugin.v2TIMManager
.getConversationManager()
.getConversationList(
100, //分页拉取的个数,一次分页拉取不宜太多,会影响拉取的速度,建议每次拉取 100 个会话
'0' //分页拉取的游标,第一次默认取传 0,后续分页拉传上一次分页拉取成功回调里的 nextSeq
);
if (getConversationListRes.code === 0) {
//拉取成功
const isFinished = getConversationListRes.data?.isFinished; //是否拉取完
const nextSeq = getConversationListRes.data?.nextSeq; //后续分页拉取的游标
getConversationListRes.data?.conversationList; //此次拉取到的消息列表
//如果没有拉取完,使用返回的nextSeq继续拉取直到isFinished为true
if (!isFinished!) {
await TencentImSDKPlugin.v2TIMManager
.getConversationManager()
.getConversationList(100, nextSeq ?? '0'); //使用返回的nextSeq继续拉取直到isFinished为true
}
getConversationListRes.data?.conversationList?.forEach((element) => {
element?.conversationID; //会话唯一 ID,如果是单聊,组成方式为 c2c_userID;如果是群聊,组成方式为 group_groupID。
element?.draftText; //草稿信息
element?.draftTimestamp; //草稿编辑时间,草稿设置的时候自动生成。
element?.faceUrl; //会话展示头像,群聊头像:群头像;单聊头像:对方头像。
element?.groupAtInfoList; //群会话 @ 信息列表,通常用于展示 “有人@我” 或 “@所有人” 这两种提醒状态。
element?.groupID; //当前群聊 ID,如果会话类型为群聊,groupID 会存储当前群的群 ID,否则为 null。
element?.groupType; //当前群聊类型,如果会话类型为群聊,groupType 为当前群类型,否则为 null。
element?.isPinned; //会话是否置顶
element?.lastMessage; //会话最后一条消息
element?.orderkey; //会话排序字段
element?.recvOpt; //消息接收选项
element?.showName; //会话展示名称,群聊会话名称优先级:群名称 > 群 ID;单聊会话名称优先级:对方好友备注 > 对方昵称 > 对方的 userID。
element?.type; //会话类型,分为 C2C(单聊)和 Group(群聊)。
element?.unreadCount; //会话未读消息数,直播群(AVChatRoom)不支持未读计数,默认为 0。
element?.userID; //对方用户 ID,如果会话类型为单聊,userID 会存储对方的用户 ID,否则为 null。
});
}