获取会话
IMLib SDK 会根据用户收发的消息,在本地数据库中生成对应会话,并维护会话列表。应用程序可以获取本地数据库中的会话列表。自 5.20.0 版本开始,SDK 支持在获取会话列表中返回超级群会话信息,以便于开发者根据业务需求对单聊、群聊、超级群会话列表进行混合排序展示;该功能需提交工单开启。
获取指定单个会话
获取某个会话的详细信息。
接口
Java
RongCoreClient.getInstance().getConversation(conversationType, targetId, callback)
参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
| conversationType | ConversationType | 会话类型 |
| targetId | String | 会话 ID |
| callback | ResultCallback<Conversation> | 回调接口 |
示例代码
Java
String conversationType = ConversationType.PRIVATE;
String targetId = "会话 Id";
RongCoreClient.getInstance().getConversation(conversationType, targetId, new IRongCoreCallback.ResultCallback<Conversation>() {
@Override
public void onSuccess(Conversation conversation) {
// 成功并返回会话信息
}
@Override
public void onError(RongIMClient.ErrorCode errorCode) {
}
});
批量获取会话信息
除了单个获取会话信息外,IMLib SDK 还支持批量获取会话的详细信息。
接口
Java
RongCoreClient.getInstance().getConversations(conversationIdentifiers, callback)
参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
| conversationIdentifiers | List<ConversationIdentifier> | 会话类型 |
| callback | ResultCallback<List<Conversation>> | 回调接口 |
注意: IMLib SDK 从 5.8.2 版本开始支持批量获取会话信息。 支持的会话类型:单聊、群聊、系统。
使用 getConversations() 方法查询多个会话的详细信息。
示例代码
Java
// 假设我们有会话标识 conIden1 和 conIden2,它们代表想要查询的会话。
List<ConversationIdentifier> conversationIdentifiers = new ArrayList<>();
conversationIdentifiers.add(ConversationIdentifier.obtain(ConversationType.PRIVATE, "tId1", ""));
conversationIdentifiers.add(ConversationIdentifier.obtain(ConversationType.PRIVATE, "tId2", ""));
RongCoreClient.getInstance().getConversations(conversationIdentifiers, new IRongCoreCallback.ResultCallback<List<Conversation>>() {
@Override
public void onSuccess(List<Conversation> conversations) {
// 成功并返回会话信息
}
@Override
public void onError(IRongCoreEnum.CoreErrorCode e) {
}
});
同步服务端会话信息到本地
提示
SDK 从 5.20.0 版本开始提供该接口。您可提交工单开通此功能。
针对更换设备登录或卸载重新安装应用的情况下,使用 getRemoteConversations() 接口可以将服务端的会话信息同步到本地。该接口只触发拉取操作,会话同步完成后,通过 setConversationListener() 设置监听同步结果。当收到 onConversationPulled() 回调后,标识远端会话列表已经同步完成。
Java
// 发起拉取远端会话请求。
RongCoreClient.getInstance().getRemoteConversations(new IRongCoreCallback.OperationCallback() {
@Override
public void onSuccess() {
}
@Override
public void onError(IRongCoreEnum.CoreErrorCode coreErrorCode) {
}
});
Java
// 注册接口会话同步监听。
RongCoreClient.getInstance().setConversationListener(new IRongCoreListener.ConversationListener() {
@Override
public void onConversationSync() {
}
@Override
public void onConversationPulled(int code) {
}
});