tencent cloud

文档反馈

Android & iOS & Mac

最后更新时间:2023-08-23 16:55:53

    功能描述

    删除消息分为两种:删除本地消息和删除云端消息。 删除云端消息会在删除本地消息的基础上,同步删除云端存储的消息,且无法恢复
    如果删除的是最后一条消息,会话的 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);
    
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持