消息重发与转发
更新时间: 2024/11/21 17:18:39
NIM SDK 的MessageService
类提供了监听消息转发/重发的方法和转发/重发消息的方法。发送转发消息与发送不同类型(如文本、音频、视频等)的消息的方法一致,需要先构建待转发的消息再调用sendMessage
方法将其发送至目标用户。
除了通知消息外,其他类型消息均支持转发给其他会话。
前提条件
已完成 SDK 初始化。
API使用限制
发送消息(sendMessage
)的方法调用存在频控,一分钟内默认最多可调用 300 次。
重发消息
消息发送失败之后,可以重发消息。消息重发和消息发送共用sendMessage
方法,如果resend
参数设置为true
,则重发消息。
转发一条消息
NIM SDK 支持转发通知和音视频通话事件消息以外所有其他消息类型。
API调用时序
转发不同类型消息的实现方法类似,本节仅以转发一条文本消息为例进行介绍。
sequenceDiagram
note over NIM SDK: 初始化 SDK
note over NIM SDK: 发送方A注册监听并登录
用户A ->> NIM SDK: 监听消息状态变化<br>(onMessageStatus)
用户A ->> NIM SDK: 登录
note over NIM SDK: 转发方B注册监听并登录
用户B ->> NIM SDK: 监听消息状态变化<br>(onMessageStatus)
用户B ->> NIM SDK: 监听消息接收<br>(onMessage)
用户B ->> NIM SDK: 登录
note over NIM SDK: 被转发方C注册监听并登录(调用接口同上)
note over NIM SDK: 消息收发
用户A ->> NIM SDK: 构造消息
用户A ->> NIM SDK: 发送消息
NIM SDK ->> 用户B: NIMMessage
note over NIM SDK: 转发消息
用户B ->> NIM SDK: 转发消息<br>(forwardMessage)
NIM SDK ->> 用户C: NIMMessage
实现流程
本节以上述 API 时序图中用户A、B、C 的消息交互场景为例,介绍转发一条消息的实现流程。
-
用户C 注册
onMessage
事件流,监听消息接收。 -
用户B 接收到用户A 发送的消息,调用
forwardMessage
转发该消息,调用时将message
参数设置为接收到的消息,将sessionId
设置为用户C 的云信 IM 账号 ID。示例代码如下:
dart
NIMResult<NIMMessage> message = await MessageBuilder.createTextMessage(sessionId: '123', sessionType: NIMSessionType.p2p, text: '转发'); if (message.isSuccess) { NimCore.instance.messageService.forwardMessage(message.data!, '123', NIMSessionType.p2p); }
-
onMessage
触发Stream
回调,用户C 通过该回调接收被转发的消息。
API参考
API |
说明 |
---|---|
onMessage |
注册消息接收事件流,监听消息的到达事件 |
forwardMessage |
转发一条消息 |
此文档是否对你有帮助?