Flutter

消息重发与转发

更新时间: 2024/03/07 11:23:15

NIM SDK 的MessageService类提供了监听消息转发/重发的方法和转发/重发消息的方法。发送转发消息与发送不同类型(如文本、音频、视频等)的消息的方法一致,需要先构建待转发的消息再调用sendMessage方法将其发送至目标用户。

除了通知消息外,其他类型消息均支持转发给其他会话。

前提条件

已完成 SDK 初始化

API使用限制

发送消息(sendMessage)的方法调用存在频控,一分钟内默认最多可调用 300 次。

重发消息

消息发送失败之后,可以重发消息。消息重发和消息发送共用sendMessage方法,如果resend参数设置为true,则重发消息。

转发一条消息

NIM SDK 支持转发通知和音视频通话事件消息以外所有其他消息类型。

API调用时序

  • 转发不同类型消息的实现方法类似,本节仅以转发一条文本消息为例进行介绍。
  • 本文的时序图可能因网络问题而显示异常。如显示异常,一般刷新当前页面即可正常显示。
uml diagram

实现流程

本节以上述 API 时序图中用户A、B、C 的消息交互场景为例,介绍转发一条消息的实现流程。

  1. 用户C 注册onMessage事件流,监听消息接收。

  2. 用户B 接收到用户A 发送的消息,调用forwardMessage转发该消息,调用时将message参数设置为接收到的消息,将sessionId设置为用户C 的云信 IM 账号 ID。

    示例代码如下:

    dartNIMResult<NIMMessage> message = await MessageBuilder.createTextMessage(sessionId: '123', sessionType: NIMSessionType.p2p, text: '转发');
    if (message.isSuccess) {
        NimCore.instance.messageService.forwardMessage(message.data!, '123', NIMSessionType.p2p);
    }
    
    
  3. onMessage触发Stream回调,用户C 通过该回调接收被转发的消息。

API参考

API
说明
onMessage 注册消息接收事件流,监听消息的到达事件
forwardMessage 转发一条消息
此文档是否对你有帮助?
有帮助
去反馈
  • 前提条件
  • API使用限制
  • 重发消息
  • 转发一条消息
  • API调用时序
  • 实现流程
  • API参考