onRecvMessageRevoked
。通知中包含了撤回消息的 msgID,您可以根据这个 msgID 判断 UI 层是哪一条消息撤回了,然后把对应的消息气泡切换成 "消息已被撤回" 状态。V2TIMManager.getMessageManager().revokeMessage(v2TIMMessage, new V2TIMCallback() {@Overridepublic void onError(int code, String desc) {// 撤回消息失败}@Overridepublic void onSuccess() {// 撤回消息成功}});
// selectedMessage 为待撤回消息[[V2TIMManager sharedInstance] revokeMessage:selectedMessagesucc:^{// 撤回消息成功} fail:^(int code, NSString *msg) {// 撤回消息失败}];
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_;};auto callback = new Callback;callback->SetCallback([=]() {// 撤回消息成功delete callback;},[=](int error_code, const V2TIMString& error_message) {// 撤回消息失败delete callback;});V2TIMManager::GetInstance()->GetMessageManager()->RevokeMessage(message, callback);
V2TIMManager.getMessageManager().addAdvancedMsgListener(new V2TIMAdvancedMsgListener() {@Override// msgList 为当前聊天界面的消息列表for (V2TIMMessage msg : msgList) {if (msg.getMsgID().equals(msgID)) {// msg 即为被撤回的消息,您需要修改 UI 上相应的消息气泡的状态}}}}
// V2TIMAdvancedMsgListener- (void)onRecvMessageRevoked:(NSString *)msgID operateUser:(V2TIMUserFullInfo *)operateUser reason:(NSString *)reason {// 收到消息撤回通知,您需要修改 UI 上相应的消息气泡的状态}
class AdvancedMsgListener final : public V2TIMAdvancedMsgListener {public:/*** 收到新消息** @param message 消息*//*** 收到消息撤回的通知** @param messageID 消息唯一标识*/void OnRecvMessageRevoked(const V2TIMString& messageID,const V2TIMUserFullInfo &operateUser,const V2TIMString &reason) override {// msgList 为当前聊天界面的消息列表}// 其他成员 ...};// 添加高级消息的事件监听器,注意在移除监听器之前需要保持 advancedMsgListener 的生命期,以免接收不到事件回调AdvancedMsgListener advancedMsgListener;V2TIMManager::GetInstance()->GetMessageManager()->AddAdvancedMsgListener(&advancedMsgListener);
本页内容是否解决了您的问题?