获取会话
客户端 SDK 会根据收发的消息在本地数据库中生成对应会话。您可以从本地数据库获取 SDK 生成的会话列表。
获取会话列表
通过以下接口分页获取 SDK 在本地数据库生成的会话列表。获取到的会话列表按照时间倒序排列,置顶会话会排在最前。
方法
int loadConversations(
List<RCIMConversationType> types,
string channelId,
int startTime,
int count
)
参数说明
参数 | 类型 | 说明 |
---|---|---|
types | List<[RCIMConversationType](https://www.rongcloud.cn/docs/api/unity/imlib_v5/latest/namespacecn__rongcloud__im__unity.html#a9d16c8fef2db0c4a5d6cfea2e5873aea)> | 选择要获取的会话类型。可设置多个会话类型。 |
channelId | string | 频道 ID,仅支持超级群使用,其他会话类型传 null 即可 |
startTime | int | 指定时间戳,以获取早于这个时间戳的会话列表。首次传 0,表示从最新开始获取;后续使用真实时间戳(即上一页最后一条会话的 sentTime )。 |
count | int | 查询的数量, count 大于 0,小于等于 50。 |
返回值
返回值 | 描述 |
---|---|
int | 当次接口操作状态码,并不代表最终操作结果,状态码详细信息 |
代码示例
int code = engine.loadConversations(
typesInt,
channelId,
startTime,
count
);
回调方法
- onConversationsLoaded
获取会话列表的结果回调
delegate void OnConversationsLoadedDelegate(int code,
List<RCIMConversationType> types,
string channelId,
long startTime,
int count,
List<RCIMConversation> conversations);
OnConversationsLoadedDelegate onConversationsLoaded;
参数说明
参数 | 类型 | 说明 |
---|---|---|
code | int | 接口回调的状态码,0 代表成功,非 0 代表出现异常 |
types | List<[RCIMConversationType](https://www.rongcloud.cn/docs/api/unity/imlib_v5/latest/namespacecn__rongcloud__im__unity.html#a9d16c8fef2db0c4a5d6cfea2e5873aea)> | 调用接口时传入的会话类型 |
channelId | string | 调用接口时传入的频道 ID |
startTime | int | 调用接口时传入的时间戳 |
count | int | 调用接口时传入的查询数量 |
conversations | List<[RCIMConversation](https://www.rongcloud.cn/docs/api/unity/imlib_v5/latest/classcn__rongcloud__im__unity_1_1_r_c_i_m_conversation.html)> | 获取的会话列表 |
代码示例
engine.onConversationsLoaded = delegate(
int code,
List<RCIMConversationType> types,
string channelId,
int startTime,
int count,
List<RCIMConversation> conversations
)
{
}
获取指定会话
获取某个会话的详细信息。
方法
int loadConversation(
RCIMConversationType type,
string targetId,
string channelId
)
参数说明
参数 | 类型 | 说明 |
---|---|---|
type | RCIMConversationType | 会话类型 |
targetId | string | 会话 ID |
channelId | string | 频道 ID,仅支持超级群使用,其他会话类型传 null 即可 |
返回值
返回值 | 描述 |
---|---|
int | 当次接口操作状态码,并不代表最终操作结果,状态码详细信息 |
代码示例
int code = engine.loadConversation(
type,
targetId,
channelId
);
回调方法
- onConversationLoaded
delegate void OnConversationLoadedDelegate(int code,
RCIMConversationType type,
string targetId,
string channelId,
RCIMConversation conversation);
OnConversationLoadedDelegate onConversationLoaded;
参数说明
参数 | 类型 | 说明 |
---|---|---|
code | int | 接口回调的状态码,0 代表成功,非 0 代表出现异常 |
type | RCIMConversationType | 调用接口时传入的会话类型 |
targetId | string | 调用接口时传入的会话 ID |
channelId | string | 调用接口时传入的频道 ID |
conversation | RCIMConversation | 获取的会话列表 |
代码示例
engine.onConversationLoaded = delegate(
int code,
RCIMConversationType type,
string targetId,
string channelId,
RCIMConversationint conversation
)
{
}
常见问题
Q1: 当用户卸载重新安装后发现会话列表为空或者部分会话丢失 A1: 由于会话列表是从本地数据库获取的, 是在 SDK 内部数据库存储的,所以当用户在卸载的时候会删除本地数据库,导致重新安装后会话列表为空,而会出现部分会话的原因是因为开启了 离线消息补偿 功能,具体操作是在后台购买 多设备消息同步 功能,这个功能里默认涵盖了今天(当天 0 点)的离线消息补偿,所以当用户在新设备登陆会触发离线消息补偿功能,从而获取到部分会话,造成部分会话丢失的错觉。如果想要更多天的离线消息补偿,可 提交工单 修改,最多支持 7 天,设置时间过长,当单用户消息量超大时,可能会因为补偿消息量过大,造成端上处理压力的问题。