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

删除消息

功能描述

删除消息分为两种:删除本地消息和删除云端消息。 删除云端消息会在删除本地消息的基础上,同步删除云端存储的消息,且无法恢复
如果删除的是最后一条消息,会话的 lastMessage 会变为前一条消息。
如果您的 SDK 版本是 5.5.892 之前,使用了 lastMesasge 进行排序,此时会影响您的会话列表顺序。
如果你的 SDK 版本是 5.5.892 及以后,并且采用了 orderKey 进行排序,此时不影响您的会话列表顺序。
详情请参考 会话列表

删除本地消息

您可以调用 deleteMessageFromLocalStorage (Android / iOS & Mac) 删除本地消息。
说明
1. 该接口只能删除本地历史。消息删除后,SDK 会在本地把这条消息标记为已删除状态,调用 getHistoryMessage 不能拉取到。
2. 如果程序卸载重装,本地会失去对这条消息的删除标记,调用 getHistoryMessage 能拉取到该条消息。
示例代码如下:
Android
iOS & Mac
// selectedMsg 为用户选中待删除的消息
V2TIMManager.getMessageManager().deleteMessageFromLocalStorage(selectedMsg, new V2TIMCallback() {
@Override
public void onSuccess() {
// 删除本地消息成功
}

@Override
public void onError(int code, String desc) {
// 删除本地消息失败
}
});
// selectedMsg 为用户选中待删除的消息
[[V2TIMManager sharedInstance] deleteMessageFromLocalStorage:selectedMessage
succ:^{
NSLog(@"删除本地消息成功");
} fail:^(int code, NSString *msg) {
NSLog(@"删除本地消息失败, code: %d, desc: %@", code, msg);
}];

删除云端存储的消息

您可以调用 deleteMessages (Android / iOS & Mac / Windows) 删除云端存储的消息。
该接口会在删除本地消息的基础上,同步删除云端存储的消息,且无法恢复。
说明
1. 每次调用,最多只能删除 50 条消息。
2. 每次调用,待删除的消息必须属于同一会话。
3. 接口限频:1 秒钟最多只能调用 1 次该接口。
4. 如果一个账号在某设备上拉取过这些消息,那么调用该接口删除云端消息后,这些消息仍然会保存在该设备上,即删除消息不支持多端同步。
示例代码如下:
Android
iOS & Mac
Windows
// selectedMessageList 为用户选中待删除的消息列表
V2TIMManager.getMessageManager().deleteMessages(selectedMessageList, new V2TIMCallback() {
@Override
public void onSuccess() {
// 删除云端消息成功
}

@Override
public void onError(int code, String desc) {
// 删除云端消息失败
}
});
// selectedMessageList 为用户选中待删除的消息列表
NSArray *selectedMessageList = @[selectedMessage1, selectedMessage2];
[[V2TIMManager sharedInstance] deleteMessages:selectedMessageList
succ:^{
NSLog(@"删除云端消息成功");
} fail:^(int code, NSString *desc) {
NSLog(@"删除云端消息失败, code: %d, desc: %@", code, 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_;
};

V2TIMMessageVector messageList = 用户选中待删除的消息列表;

auto callback = new Callback;
callback->SetCallback(
[=]() {
// 删除云端消息成功
delete callback;
},
[=](int error_code, const V2TIMString& error_message) {
// 删除云端消息失败
delete callback;
});

V2TIMManager::GetInstance()->GetMessageManager()->DeleteMessages(messageList, callback);