跳到主要内容

删除会话

App 用户可能需要从会话列表中删除一个会话或多个会话,可以通过 SDK 删除会话功能实现。客户端的会话列表是根据本地消息生成的,删除会话操作指的是删除本地会话。

删除指定批量会话

调用 removeConversation 可实现软删除的效果。该接口实际不会删除会话内的消息,仅将该会话项目从 SDK 的会话列表中移除。成功删除会话后,App 可以刷新 UI,不再向用户展示该会话项目。

    let conIdList = new List<ConversationIdentifier>();
let conId1 = new ConversationIdentifier();
conId1.conversationType = ConversationType.Private;
conId1.targetId = "会话 id";
conIdList.add(conId1)

let conId2 = new ConversationIdentifier();
conId2.conversationType = ConversationType.Private;
conId2.targetId = "会话 id";
conIdList.add(conId2)


IMEngine.getInstance().removeConversations(conIdList)
.then(result => {
if (EngineError.Success !== result.code) {
// 删除会话失败
return;
}
});
参数类型说明
conIdListList<ConversationIdentifier>会话标识数组

如果会话内再来一条消息,该会话会重新出现在会话列表中,App 用户可查看会话内的历史消息和最新消息。

SDK 未提供同时删除指定会话项目和会话历史消息的接口。如果需要同时删除会话内的消息,您可以在删除指定会话时同时调用删除消息的接口。详见删除消息

按会话类型删除会话并删除消息

App 用户可能需要清空某一类型的所有会话,例如清空所有群聊会话。SDK 支持按指定会话类型清空所有会话及会话信息,一次支持清空多个类型的会话。调用该接口会删除会话的消息

    let conTypeList = new List<ConversationType>();
conTypeList.add(ConversationType.Group);

IMEngine.getInstance().clearConversations(conTypeList)
.then(result => {
if (EngineError.Success !== result.code) {
// 删除会话失败
return;
}
});
参数类型说明
conTypeListList<ConversationType>会话类型数组

该接口仅清空会话和本地数据库内的消息。如果 App 已经开通单群聊历史消息云存储服务,服务端保存的该用户的历史消息记录不受影响。如果该用户从服务端获取历史消息,可能会获取到在本地已删除的消息。如果需要同时删除服务端的会话历史消息,您可以在删除会话后同时调用删除消息的接口。详见删除消息

删除全部会话

SDK 内部没有清除全部会话的方法,如有需要可通过以下任一方式实现:

  • 如果 App 不涉及超级群业务,您可使用 按会话类型删除会话,传入所有会话类型。这种方式会清除本地消息。
  • 先获取会话列表,循环删除指定会话。