删除会话
IMKit 在会话长按事件中默认实现了包含删除功能的操作菜单弹窗。
如果已有实现无法满足您的需求,可以使用 IMCenter 提供的删除会话 API:
删除指定会话
从会话列表移除会话项目,但不删除会话内的历史消息。该方法会自动触发会话列表页面刷新。
接口
Java
IMCenter.getInstance().removeConversation(conversationType, targetId, callbalk);
参数说明
参数 | 类型 | 说明 |
---|---|---|
conversationType | ConversationType | 会话类型 |
targetId | String | 会话 Id |
callback | ResultCallback<Boolean> | 回调接口 |
示例代码
Java
ConversationType conversationType = ConversationType.PRIVATE;
String targetId = "会话 Id";
IMCenter.getInstance().removeConversation(conversationType, targetId, new ResultCallback<Boolean>() {
@Override
public void onSuccess(Boolean success) {
}
@Override
public void onError(RongIMClient.ErrorCode errorCode) {
}
});
提示
该方法仅从会话列表移除会话项目,不会删除会话历史消息数据。当该会话产生新消息时,系统将自动重建会话列表项。如需彻底删除会话数据,必须同步调用消息删除接口,同时清除本地及服务端的消息记录。具体操作请参阅删除消息。
按类型删除会话
从本地数据库中删除指定会话类型的所有会话,并删除这些会话内的消息。IMKit 没有清除全部会话方法,您可以通过传入所有需要删除的类型来实现该效果。该方法会自动触发会话列表页面刷新。
Java
Conversation.ConversationType[] mConversationTypes = {
Conversation.ConversationType.PRIVATE,
Conversation.ConversationType.GROUP
};
IMCenter.getInstance().clearConversations(new RongIMClient.ResultCallback() {
@Override
public void onSuccess(Object object) {
}
@Override
public void onError(RongIMClient.ErrorCode errorCode) {
}
}, mConversationTypes);
参数 | 类型 | 说明 |
---|---|---|
callback | ResultCallback | 移除会话是否成功的回调 |
conversationTypes | ConversationType... | 需要清空的会话类型列表 |