圈组消息更新
更新时间: 2024/11/21 17:18:39
NIM SDK 的QChatMessageService
类提供圈组消息更新的方法,支持在发送消息后更新消息。
前提条件
- 已开通圈组功能。
- 已完成圈组初始化。
实现流程
API 调用时序
sequenceDiagram
note over NIM SDK: 初始化并登录IM
note over NIM SDK: 注册监听并登录圈组
发送方 ->> NIM SDK: 登录圈组
接收方 ->> NIM SDK: 监听消息接收事件<br>(onReceiveMessage)
接收方 ->> NIM SDK: 监听消息更新事件<br>(onMessageUpdate)
接收方 ->> 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>(updateMessage)
NIM SDK ->> 接收方: 更新后的消息
具体流程
本节仅对上图中标为部分的流程进行说明,其他流程请参考相关文档。例如:
- 服务器成员相关说明,可参见圈组服务器成员管理
- 权限相关说明,可参见身份组相关文档。
-
接收方在登录圈组前,注册
onReceiveMessage
消息接收回调和onMessageUpdate
消息更新回调,分别监听圈组消息接收和消息更新。示例代码如下:
注册消息接收观察者NimCore.instance.qChatObserver.onReceiveMessage.listen((event) { //message received });
注册消息更新观察者NimCore.instance.qChatObserver.onMessageUpdate.listen((event) { //message updated });
-
发送方在发送消息后,调用
updateMessage
方法更新消息。该方法入参结构
QChatUpdateMessageParam
中必须传入更新操作通用参数、消息所属的服务器的ID(serverId
)、消息所属的频道的 ID(channelId
)、消息发送时间以及消息服务端 ID。可以修改消息中的内容、自定义扩展和消息服务端状态,其中消息服务端状态值必须大于或等于 1000,否则会返回 414 错误码。
示例代码如下:
var paramUpdateMsg = QChatUpdateMessageParam(channelId: channelId, updateParam: updateParam, serverId: serverId, time: time, msgIdServer: msgIdServer); NimCore.instance.qChatMessageService.updateMessage(paramUpdateMsg).then(( value) { if (value.isSuccess) { //update message success } });
-
onMessageUpdate
回调触发,将更新后的消息投递至接收方。
此文档是否对你有帮助?