转发消息
IMKit 目前不支持对单条或多条消息的转发,也不支持合并转发,下面提供了可以实现单条或多条消息的转发的代码示例进行参考。



局限
- 并非所有消息类型均支持合并转发。
- 支持的消息类型:文本、 图片、图文、GIF、动态表情(
RC:StkMsg
)、名片、位置、小视频、文件、普通语音、高清语音、音视频通话(RC:VCSummary
)。 - 不支持的情况:未在支持列表中的消息类型,例如引用消息,以及未发送成功的消息等特殊情况不支持转发。自定义消息均不支持合并转发。
- 支持的消息类型:文本、 图片、图文、GIF、动态表情(
- 合并转发支持合并不能超过 100 条消息。
单条转发
可以增加消息气泡的长按事件 自定义来实现转发。在 onClick
中发消息使用 示例代码 的 sendForwardMessage
方法。
TypeScript
let msgForwardLongClickAction :ItemLongClickAction<Message> = {
obtainTitle: (context: Context, data: Message): string | Resource => {
return "转发消息"
},
onClick: (context: Context, data: Message): void => {
// 转发消息
},
onFilter: (data: Message): boolean => {
// 是否显示该长按事件?true 显示;false 不显示
// 开发者可以根据 Message 对象的会话类型或者消息类型决定是否显示
return true;
},
// 自定义的消息长按事件 Id,相同的 Id 的长按事件只会增加一次
actionId: 'CustomMessageActionId'
}
RongIM.getInstance().conversationService().addMessageItemLongClickAction(msgForwardLongClickAction);

合并转发(1.4.3 支持)
SDK 会将选中的消息合并为一条合并转发消息,包含消息内容对象 CombineMessage
(类型标识:RC:CombineMsg
)。合并转发的消息默认折叠显示,可点击 展开。
预览页面事件监听
TypeScript
export interface CombineMessageEventListener {
/**
* 合并转发消息预览页面的位置消息点击事件回调
* @param latitude 纬度, double 类型
* @param longitude 经度, double 类型
* @param locationName 地理位置的名称
*/
onLocationMessageClick?: (latitude: number, longitude: number, locationName: string) => void;
}
let combineMessageEventListener: CombineMessageEventListener = {
onLocationMessageClick: (latitude: number, longitude: number, locationName: string) => {
// 地图消息跳转地图页面查看位置
}
}
// 添加事件监听
RongIM.getInstance().messageService().addCombineMessageEventListener(combineMessageEventListener)
// 移除事件监听
RongIM.getInstance().messageService().removeCombineMessageEventListener(combineMessageEventListener)
预览页面样式设置
TypeScript
let config = RongIM.getInstance().conversationService().getConversationConfig()
config.setCombineHtmlStyle("样式style")
RongIM.getInstance().conversationService().setConversationConfig(config)