iOS

消息更新

更新时间: 2024/11/21 15:43:10

网易云信 NIM iOS SDK 支持更新消息。为了保证存储消息的完整性,只支持更新消息的本地扩展字段 LocalExt 和自定义消息的附件对象 NIMCustomObject

请不要对通知消息进行更新。

前提条件

已调用 addDelegate: 方法添加委托,注册“消息发送完成回调”函数(sendMessage:didCompleteWithError: ),且已通过该回调函数判断消息已发送完成。

实现方法

sequenceDiagram




note over NIM SDK: 初始化
发送方 ->> NIM SDK: 初始化SDK
接收方 ->> NIM SDK: 初始化SDK 
note over NIM SDK: 发送方注册回调函数并登录
发送方 ->> NIM SDK: 监听"即将发送消息"事件<br>&消息发送进度<br>&"消息发送完成"事件
发送方 ->> NIM SDK: 登录
note over NIM SDK: 接收方注册回调函数并登录
接收方 ->> NIM SDK: 监听消息接收
接收方 ->> NIM SDK: 登录
note over NIM SDK: 消息收发
发送方 ->> NIM SDK: 构建并发送文本消息
NIM SDK ->> 接收方: 投递消息
note over NIM SDK: 更新消息
发送方 ->> NIM SDK: 更新消息

调用updateMessage:forSession:completion:方法更新消息的本地扩展字段 LocalExt 和自定义消息的附件对象 NIMCustomObject

该方法为异步写入,您无需在应用上层单独开线程,直接在当前线程调用即可。

  • API 原型

    objc@protocol NIMConversationManager <NSObject>
    - (void)updateMessage:(NIMMessage *)message
            forSession:(NIMSession *)session
            completion:(nullable NIMUpdateMessageBlock)completion;
    @end
    

    参数说明:

    参数 类型 说明
    message NIMMessage 需要被更新的消息,支持的更新属性见上文
    session NIMSession 消息所在的会话
    completion NIMUpdateMessageBlock 完成后的回调
  • 示例代码

    //消息打上拉黑拒收标记,方便 UI 显示
    message.localExt = @{NTESMessageRefusedTag:@(true)};
    [[NIMSDK sharedSDK].conversationManager updateMessage:message forSession:message.session completion:nil];
    
此文档是否对你有帮助?
有帮助
去反馈
  • 前提条件
  • 实现方法