iOS

圈组消息更新

更新时间: 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 ->> 接收方: 消息更新事件

具体流程

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

  1. 接收方在登录圈组前,调用 addDelegate: 方法添加委托(具体回调函数如下)并登录。

    示例代码如下:

    注册消息接收回调
    - (void)onRecvMessages:(NSArray<NIMQChatMessage *> *)messages
    {
        //your code, deal messages
    }
    
    注册消息更新回调
    - (void)onMessageUpdate:(NIMQChatUpdateMessageEvent *)event
    {
        
    }
    
  2. 发送方在发送消息后,调用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
    }];
    
    
  3. onMessageUpdate:消息更新事件回调触发,接收方通过该回调收到更新后的消息。

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