• UIKit
  • SDK
  • 服务端 API
Chat/
SDK/
Android/
会话/
SDK
  • 集成 SDK
  • 初始化
  • 登录登出
  • 消息
    • 介绍
    • 发送消息
    • 接收消息
    • 历史消息
    • 转发消息
    • 消息变更
    • 插入消息
    • 删除消息
    • 清空消息
    • 撤回消息
    • 在线消息
    • 已读回执
    • 查询消息
    • 群 @ 消息
    • 群定向消息
    • 消息免打套
    • 消息扩展
    • 消息回应
    • 消息翻译
    • 消息置顶
  • 会话
    • 介绍
    • 会话列表
    • 获取会话
    • 会话未读数
    • 置顶会话
    • 删除会话
    • 会话草稿
    • 会话标记
    • 会话分组
  • 群组
    • 介绍
    • 管理群组
    • 群资料
    • 管理群成员
    • 群成员资料
    • 自定义属性
    • 群计数器
  • 社群话题
    • 管理社群
    • 权限组
  • 用户
    • 用户资料
    • 用户状态
    • 管理好友
    • 好友分组
    • 黑名单
    • 关注与粉丝
  • 本地搜索
    • 搜索消息
    • 搜索好友
    • 搜索群组
    • 搜索群成员
  • 信令
  • 客户端 API
    • Java
  • 开发指引
  • 控制台指南
    • 创建和升级应用
    • 基本配置
    • 功能配置
    • 账号管理
    • 群组管理
    • 回调配置
  • 产品介绍
    • 消息管理
      • 单聊消息
      • 消息存储
      • 离线推送
      • 群消息
      • 消息格式
    • 账号系统
      • 登陆验证
      • 在线状态管理
    • 群相关
      • 群组系统
      • 群组管理
    • 用户资料和关系链
      • 资料管理
      • 关系链管理
  • 购买指南
    • 计费概述
    • 价格中心
  • 错误码

删除会话

功能描述

删除好友或退出群组后,SDK 不会自动删除对应的单聊或群聊会话。客户可以调用下文的接口,主动删除会话。
会话删除默认不支持多端同步,您可以在 即时通信 IM 控制台 开启多端同步。配置页面如下图所示:



说明
删除会话多端同步功能仅 SDK 5.1.1 及以上版本支持。

删除单个会话

您可以调用 deleteConversation(Android / iOS & Mac / Windows) 接口,删除指定的会话。
注意:
删除会话会同时删除终端和服务器的历史消息,且无法恢复。如果您希望保留历史消息,请使用 删除多个会话接口。
示例代码如下:
Android
iOS & Mac
Windows
String conversationID = "conversationID";
V2TIMManager.getConversationManager().deleteConversation(conversationID, new V2TIMCallback() {
@Override
public void onSuccess() {
// 删除会话成功
}
@Override
public void onError(int code, String desc) {
// 删除会话失败
}
});
NSString *conversationID = @"conversationID";
[[V2TIMManager sharedInstance] deleteConversation:conversationID
succ:^{
// 删除会话成功
}
fail:^(int code, NSString *desc) {
// 删除会话失败
}];
class Callback final : public V2TIMCallback {
public:
using SuccessCallback = std::function<void()>;
using ErrorCallback = std::function<void(int, const V2TIMString&)>;

Callback() = default;
~Callback() override = default;

void SetCallback(SuccessCallback success_callback, ErrorCallback error_callback) {
success_callback_ = std::move(success_callback);
error_callback_ = std::move(error_callback);
}
void OnSuccess() override {
if (success_callback_) {
success_callback_();
}
}
void OnError(int error_code, const V2TIMString& error_message) override {
if (error_callback_) {
error_callback_(error_code, error_message);
}
}
private:
SuccessCallback success_callback_;
ErrorCallback error_callback_;
};

V2TIMString groupName = u8"conversationID";
auto callback = new Callback;
callback->SetCallback(
[=]() {
// 删除会话成功
delete callback;
},
[=](int error_code, const V2TIMString& error_message) {
// 删除会话失败
delete callback;
});
V2TIMManager::GetInstance()->GetConversationManager()->DeleteConversationGroup(groupName, callback);

删除多个会话

您可以调用 deleteConversationList(Android / iOS & Mac / Windows) 接口,删除指定的会话。clearMessage 设置为 false 时,会保留会话消息;设置为 true 时,本地和服务器的消息会一起删除,并且不可恢复。
说明:
仅 SDK 7.1 及以上版本支持。
每次最多支持删除 100 个会话。
示例代码如下:
Android
iOS & Mac
Windows
List<String> conversationIDList = new ArrayList<>();
conversationIDList.add("c2c_userID");
conversationIDList.add("group_groupID");
V2TIMManager.getConversationManager().deleteConversationList(
conversationIDList, true, new V2TIMValueCallback<List<V2TIMConversationOperationResult>>() {
@Override
public void onSuccess(List<V2TIMConversationOperationResult> results) {
// 删除会话成功
for (V2TIMConversationOperationResult result : results) {
int code = result.getResultCode();
String info = result.getResultInfo();
String conversationID = result.getConversationID();
}
}
@Override
public void onError(int code, String desc) {
// 删除会话失败
}
});
NSMutableArray *conversationIDList = [NSMutableArray array];
[conversationIDList addObject:@"c2c_userID"];
[conversationIDList addObject:@"group_groupID"];
[[V2TIMManager sharedInstance] deleteConversationList:conversationIDList
clearMessage:true
succ:^(NSArray<V2TIMConversationOperationResult *> *results) {
// 删除会话成功
for (V2TIMConversationOperationResult *result in results) {
int code = result.resultCode;
NSString *info = result.resultInfo;
NSString *conversationID = result.conversationID;
}
}
fail:^(int code, NSString *desc) {
// 删除会话失败
}];
template <class T>
class ValueCallback final : public V2TIMValueCallback<T> {
public:
using SuccessCallback = std::function<void(const T&)>;
using ErrorCallback = std::function<void(int, const V2TIMString&)>;

ValueCallback() = default;
~ValueCallback() override = default;

void SetCallback(SuccessCallback success_callback, ErrorCallback error_callback) {
success_callback_ = std::move(success_callback);
error_callback_ = std::move(error_callback);
}
void OnSuccess(const T& value) override {
if (success_callback_) {
success_callback_(value);
}
}
void OnError(int error_code, const V2TIMString& error_message) override {
if (error_callback_) {
error_callback_(error_code, error_message);
}
}
private:
SuccessCallback success_callback_;
ErrorCallback error_callback_;
};

V2TIMStringVector conversationIDList;
conversationIDList.PushBack(u8"c2c_userID");
conversationIDList.PushBack(u8"group_groupID");
auto callback = new ValueCallback<V2TIMConversationOperationResultVector>{};
callback->SetCallback(
[=](const V2TIMConversationOperationResultVector& results) {
// 删除会话成功
for (size_t i = 0; i < results.Size(); ++i) {
const V2TIMConversationOperationResult& result = results[i];
int code = result.resultCode;
V2TIMString info = result.resultInfo;
V2TIMString conversationID = result.conversationID;
}
delete callback;
},
[=](int error_code, const V2TIMString& error_message) {
// 删除会话失败
delete callback;
});
V2TIMManager::GetInstance()->GetConversationManager()->DeleteConversationList(conversationIDList, true, callback);

会话被删除通知

如果您事先调用了 addConversationListener(Android / iOS & Mac / Windows) 添加会话监听器,就可以在 onConversationDeleted 中获取会话被删除的通知。
示例代码如下:
Android
iOS & Mac
Windows
@Override
public void onConversationDeleted(List<String> conversationIDList) {
Log.i("imsdk", "onConversationDeleted");
}
- (void)onConversationDeleted:(NSArray<NSString *> *)conversationIDList {
// 会话被删除
}
void OnConversationDeleted(const V2TIMStringVector &conversationIDList) override {
// 收到会话被删除通知
}