Flutter

圈组消息删除

更新时间: 2024/11/21 17:18:39

NIM SDK 的QChatMessageService类提供消息删除方法,支持在发送消息后删除消息。

消息发送方和拥有删除他人消息权限(deleteMsg)的频道成员都可删除消息。

前提条件

实现流程

API 调用时序

sequenceDiagram



note over NIM SDK: 初始化SDK并登录IM
note over NIM SDK: 注册监听并登录圈组
发送方 ->> NIM SDK: 监听消息删除事件<br>(onMessageDelete)
发送方 ->> NIM SDK: 登录圈组
接收方 ->> NIM SDK: 监听消息接收事件<br>(onReceiveMessage)
接收方 ->> NIM SDK: 监听消息删除事件<br>(onMessageDelete)
接收方 ->> NIM SDK: 登录圈组
note over NIM SDK: 双方都成为同一服务器的成员
note over NIM SDK: 双方都进入同一频道
note over NIM SDK: 发送方拥有发送消息的权限
note over NIM SDK: 接收方拥有删除他人消息的权限
note over NIM SDK: 消息收发与删除
发送方 ->> NIM SDK: 在频道发送消息
NIM SDK ->> 接收方: 投递消息(QChatMessage)
接收方 ->> NIM SDK: 删除消息<br>(deleteMessage)
NIM SDK ->> 接收方: 消息删除结果
NIM SDK ->> 发送方: 消息删除结果

具体流程

本节仅对上图中标为部分的流程进行说明,其他流程请参考相关文档。例如:

  1. 注册回调函数并登录。

    • 发送方在登录圈组前,注册onMessageDelete消息删除事件回调,监听消息删除。
    • 接收方在登录圈组前,注册onReceiveMessage消息接收回调和onMessageDelete消息删除事件回调,分别监听消息接收和消息删除。

    示例代码如下:

    注册消息接收回调
       NimCore.instance.qChatObserver.onReceiveMessage.listen((event) {
      //message received
    });
    
    注册消息删除事件回调
    NimCore.instance.qChatObserver.onMessageDelete.listen((event) {
      // message deleted
    });
    
  2. 接收方在收到消息后,调用deleteMessage方法删除消息。

    该方法入参结构QChatDeleteMessageParam 必须传入更新操作通用参数、消息所属的服务器的 ID、消息所属的频道的 ID、消息发送时间以及消息服务端 ID。

    删除未读消息将影响未读数。


    示例代码如下:

     var paramDeleteMsg = QChatDeleteMessageParam(channelId: channelId,
         serverId: serverId,
         msgIdServer: msgIdServer,
         time: time,
         updateParam: updateParam);
     
     NimCore.instance.qChatMessageService.deleteMessage(paramDeleteMsg).then((value){
       if (value.isSuccess) {
         //delete message success
       }
     });
    
  3. onMessageDelete回调触发,接收方和发送方通过该回调接收消息删除结果。

此文档是否对你有帮助?
有帮助
去反馈
  • 前提条件
  • 实现流程
  • API 调用时序
  • 具体流程