引用回复
IMKit 支持引用回复功能,允许用户在聊天页面中引用并回复一条消息。默认情况下,IMKit 使用 RCReferenceMessage(类型标识:RC:ReferenceMsg)发送回复内容。
- 从 5.38.0 版本开始,IMKit 支持带引用关系信息的消息。
- 该功能需要在 IMKit SDK 中配置开启后才能使用;未开启时,IMKit 仍使用原引用消息逻辑。


使用限制
旧版引用回复功能有以下限制:
- 仅支持文本消息、文件消息、图文消息、图片消息、引用消息的引用。
- 引用深度仅支持一层,即只能引用回复原始消息。如果出现多重引用,只展示上一层被引用消息内容。
- 被引用消息撤回后,引用消息仍会展示被引用的消息内容。
带引用关系信息的消息有以下限制:
- 引用展示仅支持一层。如果被引用消息本身携带引用关系,引用卡片只展示当前被引用消息对应的一层内容,不会递归展示更早的引用层级。
- IMKit 内置会话页面支持引用已发送成功且有
messageUId的消息。用户发送回复时,默认支持文本、图片、GIF、小视频、普通语音、高清语音、文 件、位置消息作为回复内容。您可以通过quoteMessageTypeWhiteList调整允许发送的回复消息类型。 - 开启后,低版本 SDK 会按原消息类型展示回复消息,无法展示引用关系信息。
用法
IMKit 会话页面默认已启用引用回复功能。用户在会话页面长按消息,并在弹出的消息菜单中选择引用消息,即可引用该消息。在输入区添加回复内容后,SDK 默认会将回复内容与被引用消息组合为 RCReferenceMessage,并发送到会话中。
带引用关系信息的消息
默认的引用回复会将输入内容与被引用消息组合为 RCReferenceMessage 发送。开启带引用关系信息的消息后,SDK 会在实际发送的消息对象上写入引用关系信息 RCQuoteInfo,并通过 RCMessage.quoteInfo 标识该消息回复的是哪一条原始消息。原 RC:ReferenceMsg 仍然可以正常使用。
带引用关系信息的消息默认关闭 。开启后,用户引用一条消息后,可以发送文本、图片、GIF、小视频、普通语音、高清语音、文件、位置等多种类型的消息作为回复。
您可以通过 IMKit 全局配置开启带引用关系信息的消息。
RCKitConfigCenter.message.enableQuoteV2 = YES;
发送前,请确认被引用消息已存在于本地消息库,且 messageUId 有效。SDK 发送时会根据 quoteInfo.messageUId 查询被引用消息;如果未查询到对应消息,发送会失败并返回 RC_DB_DATA_NOT_FOUND(错误码:34304)。
可发送的回复消息类型由 quoteMessageTypeWhiteList 控制。默认包含:
| 消息类型 | 类型标识 |
|---|---|
| 文本消息 | RC:TxtMsg |
| 图片消息 | RC:ImgMsg |
| GIF 消息 | RC:GIFMsg |
| 小视频消息 | RC:SightMsg |
| 普通语音消息 | RC:VcMsg |
| 高清语音消息 | RC:HQVCMsg |
| 文件消息 | RC:FileMsg |
| 位置消息 | RC:LBSMsg |
如需限制可作为回复发送的消息类型,可以重新设置白名单。IMKit 内置会话页面暂不将自定义消息加入默认回复类型白名单;如果业务需要发送自定义消息作为回复消息,可将自定义消息类型加入白名单。
RCKitConfigCenter.message.quoteMessageTypeWhiteList = @[
[RCTextMessage getObjectName],
[RCImageMessage getObjectName],
[RCFileMessage getObjectName]
];