消息引用/回复

更新时间: 2025/09/11 14:15:56

UIKit 支持消息引用功能,功能允许用户在对话中引用先前的消息进行回复,增强对话的上下文关联性。用户可以通过点击引用部分直接跳转到原始消息,并伴随高亮闪烁效果提升用户体验。

效果展示

您可以在 UIKit 中使用消息引用/回复功能,体验效果如下:

引用 取消引用

前提条件

已在云信控制台开通 会话消息回复 功能,如何开通具体请参考 开启/关闭功能

实现消息引用

您可以在 /NEChatUIKit/NEChatUIKit/Classes/Chat/Controller/ChatViewController 中参考引用相关逻辑。

  1. 单击 回复 item 后,后台会调用 showReplyMessageView 方法,将 viewModel.isReplying 设置为 true。
  2. 发消息接口(sendText)会判断 viewModel.isReplying 是否为 true,为 true 则调用 replyMessageWithThread 接口发送消息。
  3. NormalChatMessageBaseCell 中的 replyLabel 用于展示回复消息内容。

界面操作:

  • 引用一条消息:长按消息,消息上会弹出消息工具栏。单击工具栏中的引用按钮,对该消息进行引用。

  • 取消引用:在消息被引用但还未发出时,通过单击引用之后的关闭按钮,可以取消消息引用。

  • 查看被引用的消息:点击引用内容后的跳转行为:

    • 原始消息在可视范围内:直接高亮闪烁。
    • 原始消息在列表中但不可见:自动滚动至该位置并高亮。
    • 原始消息已被删除或撤回:显示 该消息已撤回或删除 提示。

常见问题

如何屏蔽引用功能?

class CustomP2PChatViewController: P2PChatViewController {
    override func viewDidLoad() {
        ...
        // 长按消息功能弹窗过滤列表(过滤列表中的能力会在整个页面中禁用)
        operationCellFilter = [.reply]
    }

    // 长按消息功能弹窗列表自定义(可针对不同 type 消息自定义长按功能项)
    override func setOperationItems(items: inout [OperationItem], model: MessageContentModel?) {
        if model?.type == .rtcCallRecord {
        items.append(OperationItem.replayItem())
        }
    }
}
此文档是否对你有帮助?
有帮助
去反馈
  • 效果展示
  • 前提条件
  • 实现消息引用
  • 常见问题
  • 如何屏蔽引用功能?