圈组消息删除
更新时间: 2024/03/15 15:14:37
NIM SDK 的QChatMessageService
接口提供方法支持在发送消息后删除消息。
消息发送方和拥有删除他人消息权限(DELETE_MSG
)的频道成员都可删除消息。
前提条件
- 已开通圈组功能。
- 已完成圈组初始化。
实现流程
API 调用时序
以下时序图可能因为网络问题而显示异常。如显示异常,一般刷新当前页面即可正常显示。
具体流程
本节仅对上图中标为橙色的流程进行说明,其他流程请参考相关文档。例如:
-
注册回调函数并登录。
- 发送方在登录圈组前,注册
observeMessageDelete
消息删除观察者,监听消息删除。 - 接收方在登录圈组前,注册
observeReceiveMessage
消息接收观察者和observeMessageDelete
消息删除观察者,分别监听消息接收和消息删除。
示例代码如下:
注册消息接收观察者NIMClient.getService(QChatServiceObserver.class).observeReceiveMessage(new Observer<List<QChatMessage>>() { @Override public void onEvent(List<QChatMessage> qChatMessages) { //收到消息qChatMessages for (QChatMessage qChatMessage : qChatMessages) { //处理消息 } } }, true);
注册消息删除观察者NIMClient.getService(QChatServiceObserver.class).observeMessageDelete(new Observer<QChatMessageDeleteEvent>() { @Override public void onEvent(QChatMessageDeleteEvent event) { //收到删除后的消息qChatMessage QChatMessage message = event.getMessage(); } }, true);
- 发送方在登录圈组前,注册
-
接收方在收到消息后,调用
deleteMessage
方法删除消息。该方法入参结构
QChatDeleteMessageParam
必须传入更新操作通用参数、消息所属的服务器的 ID、消息所属的频道的 ID、消息发送时间以及消息服务端 ID。删除未读消息将影响未读数。
示例代码如下:
QChatUpdateParam updateParam = new QChatUpdateParam(); updateParam.setPostscript("附言"); updateParam.setExtension("操作扩展字段"); NIMClient.getService(QChatMessageService.class).deleteMessage(new QChatDeleteMessageParam(updateParam,943445L,885305L,currentMessage.getTime(),currentMessage.getMsgIdServer())) .setCallback(new RequestCallback<QChatDeleteMessageResult>() { @Override public void onSuccess(QChatDeleteMessageResult result) { //删除成功,返回删除后的消息 QChatMessage message = result.getMessage(); } @Override public void onFailed(int code) { //删除失败,返回错误code } @Override public void onException(Throwable exception) { //删除异常 } });
-
observeMessageDelete
观察者回调函数触发,将消息删除结果投递至接收方和发送方。
相关信息
圈组各端 (Android、iOS、Windows 和 含圈组版 Web)监听消息更新、消息撤回和消息删除的方式略有差异,具体为:Android 将消息更新、消息撤回和消息删除三个事件进行区分;而其他端的消息撤回和消息删除事件,都并入消息更新事件,不进行区分。
各端的相关事件回调接口如下:
Android | iOS | Windows | 含圈组版 Web | |
---|---|---|---|---|
监听消息更新 | observeMessageUpdate |
onMessageUpdate: |
RegUpdatedCb |
messageUpdate |
监听消息撤回 | observeMessageRevoke |
|||
监听消息删除 | observeMessageDelete |
此文档是否对你有帮助?