圈组消息更新
更新时间: 2024/11/21 15:43:04
NIM SDK 的NIMQChatMessageManager
协议提供圈组消息更新的方法,支持在发送消息后更新消息。
前提条件
- 已开通圈组功能。
- 已完成圈组初始化。
实现流程
API 调用时序
sequenceDiagram
note over NIM SDK: 初始化 SDK 并登录 IM
note over NIM SDK: 注册回调函数并登录圈组
发送方 ->> NIM SDK: 登录圈组
接收方 ->> NIM SDK: 注册接收消息回调
接收方 ->> NIM SDK: 注册消息更新事件回调
接收方 ->> NIM SDK: 登录圈组
note over NIM SDK: 双方都成为同一服务器的成员
note over NIM SDK: 双方都能访问同一频道
note over NIM SDK: 发送方拥有发送消息的权限
note over NIM SDK: 消息收发
发送方 ->> NIM SDK: 在频道发送消息
NIM SDK ->> 接收方: 投递消息(NIMQChatMessage)
发送方 ->> NIM SDK: 更新消息
NIM SDK ->> 接收方: 消息更新事件
具体流程
本节仅对上图中标为部分的流程进行说明,其他流程请参考相关文档。例如:
-
接收方在登录圈组前,调用
addDelegate:
方法添加委托(具体回调函数如下)并登录。- 注册
onRecvMessages:
消息接收回调函数。 - 注册
onMessageUpdate:
消息更新事件回调函数。
示例代码如下:
注册消息接收回调- (void)onRecvMessages:(NSArray<NIMQChatMessage *> *)messages { //your code, deal messages }
注册消息更新回调- (void)onMessageUpdate:(NIMQChatUpdateMessageEvent *)event { }
- 注册
-
发送方在发送消息后,调用
updateMessage:completion:
方法更新消息。示例代码如下:
id<NIMQChatMessageManager> qchatMessageManager = [[NIMSDK sharedSDK] qchatMessageManager]; NIMQChatUpdateMessageParam *param = [[NIMQChatUpdateMessageParam alloc] init]; param.message = message; NIMQChatUpdateMessageInfo *updateInfo = [[NIMQChatUpdateMessageInfo alloc] init]; // 修改为自定义状态 updateInfo.status = 1000123; param.updateInfo = updateInfo; //更新设置 NIMQChatUpdateParam *universalUpdateInfo = [NIMQChatUpdateParam new]; universalUpdateInfo.postscript = @"更新消息"; universalUpdateInfo.pushContent = @"更新了消息"; universalUpdateInfo.env = @"***"; universalUpdateInfo.routeEnable = YES; param.updateParam = universalUpdateInfo; [qchatMessageManager updateMessage:param completion:^(NSError *__nullable error, NIMQChatUpdateMessageResult *__nullable result) { // your code }];
-
onMessageUpdate:
消息更新事件回调触发,接收方通过该回调收到更新后的消息。
此文档是否对你有帮助?