浏览 SDKs · Android
平台
SDKsAndroid

撤回消息

撤回已发送消息,并处理其他客户端收到的撤回通知。

复制

在可撤回时效内撤回自己已成功发送的消息。调用成功后,当前会话中的该条消息会被标记为已撤回状态,群聊或单聊对端会收到撤回事件并将消息内容替换为撤回提示。

String conversationID = "si_user_a_user_b";
String clientMsgID = "msg_001";

OpenIMClient.getInstance().messageManager.revokeMessageV2(
    new OnBase<String>() {
        @Override
        public void onSuccess(String data) {
            // 撤回请求已成功提交
        }

        @Override
        public void onError(int code, String error) {
            // 处理撤回失败(如超过允许撤回的时限)
        }
    },
    conversationID,
    clientMsgID
);

参数说明

参数类型是否必填说明
baseOnBase<String>是异步请求回调。
conversationIDString是待撤回消息所属的目标会话 ID。
clientMsgIDString是待撤回目标消息的客户端消息 ID。

返回结果

成功回调中的 data 返回确认信息。

监听消息撤回事件

会话中各端通过 OnAdvanceMsgListener.onRecvMessageRevokedV2 接收消息被撤回的通知:

@Override
public void onRecvMessageRevokedV2(RevokedInfo info) {
    // 根据 info.getClientMsgID() 找到原消息
    // 将其状态更新为已撤回,并展示撤回人(info.getRevokerNickname())提示
}

客户端在收到撤回事件后,应以 clientMsgID 为标识更新原消息的显示样式为撤回占位符,而不是直接从列表中删除该行。高级消息监听器的完整注册见接收消息。