即时通信 IM Android&iOS&Windows&Mac(删除消息)

删除消息分为两种:删除本地消息和删除云端消息。
删除云端消息会在删除本地消息的基础上,同步删除云端存储的消息,且无法恢复。如果删除的是最后一条消息,会话的 lastMessage 会变为前一条消息。

相关产品
即时通信 IM 产品页,含版本规格、价格与购买入口。

一、功能描述

·如果你的 SDK 版本是 5.5.892 之前,使用了 lastMesasge 进行排序,此时会影响你的会话列表顺序。

·如果你的 SDK 版本是 5.5.892 及以后,并且采用了 orderKey 进行排序,此时不影响你的会话列表顺序。
详情请参考 会话列表。

二、删除本地消息

你可以调用 deleteMessageFromLocalStorage (Java / Swift / Objective-C) 删除本地消息。

注意:说明:

注意:1. 该接口只能删除本地历史。消息删除后,SDK 会在本地把这条消息标记为已删除状态,调用 getHistoryMessage 不能拉取到。

注意:2. 如果程序卸载重装,本地会失去对这条消息的删除标记,调用 getHistoryMessage 能拉取到该条消息。

示例代码如下:

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

三、删除云端存储的消息

你可以调用 deleteMessages (Java / Swift / Objective-C / Windows) 删除云端存储的消息。

该接口会在删除本地消息的基础上,同步删除云端存储的消息,且无法恢复。

注意:说明:

注意:1. 每次调用,最多只能删除 30 条消息。

注意:2. 每次调用,待删除的消息必须属于同一会话。

注意:3. 接口限频:1 秒钟最多只能调用 1 次该接口。

注意:4. 如果一个账号在某设备上拉取过这些消息,那么调用该接口删除云端消息后,这些消息仍然会保存在该设备上,即删除消息不支持多端同步。

示例代码如下:

JavaSwiftObjective-CC++// selectedMessageList 为用户选中待删除的消息列表V2TIMManager.getMessageManager().deleteMessages(selectedMessageList, new V2TIMCallback() { @Override public void onSuccess() { // 删除云端消息成功 } @Override public void onError(int code, String desc) { // 删除云端消息失败 }});let selectedMessageList: [V2TIMMessage] = [selectedMessage1, selectedMessage2]V2TIMManager.shared.deleteMessages(msgList: sendedMsgList) { print("deleteMessages succ") } fail: { code, desc in print("deleteMessages fail, \\(code), \\(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); callback);

赞 (0)
上一篇 4天前
下一篇 4天前