跳到主要内容

转发消息

IMKit 支持对单条消息转发,和对多条消息的逐条转发/合并转发的功能,允许用户在聊天页面中将消息转发到其他会话中。转发后消息将出现在目标会话页面的消息列表组件中。

提示

IMKit 默认未启用合并转发功能。您可以按需启用合并转发功能。下图中 App 已打开合并转发功能,因此可看到逐条转发合并转发两个功能选项。

alt(width=250) alt(width=250)

局限

  • 并非所有消息类型均支持合并转发。
    • 支持的消息类型:文本、图片、图文、GIF、动态表情(RC:StkMsg)、名片、位置、小视频、文件、普通语音、高清语音、音视频通话(RC:VCSummary)。
    • 不支持的情况:未在支持列表中的消息类型,例如引用消息,以及未发送成功的消息等特殊情况不支持转发。自定义消息均不支持合并转发。

用法

IMKit 会话页面默认已启用转发功能。用户在会话页面长按消息,在弹框里选择更多,即可展示转发消息选项。

  • 逐条转发:默认开启。可转发单聊或多条消息至目标会话。
  • 合并转发:默认关闭,不展示。如果合并转发,SDK 会将选中的消息合并为一条合并转发消息,包含消息内容对象 RCCombineMessage(类型标识:RC:CombineMsg)。合并转发的消息默认折叠显示,可点击展开。

启用合并转发功能

IMKit 支持合并转发功能,该功能默认关闭。您可以修改全局配置,打开 IMKit 的合并转发功能。

RCKitConfigCenter.message.enableSendCombineMessage = YES;

定制化

自定义转发会话列表

IMKit 中选中逐条转发或合并转发后,在转发会话列表页面默认展示 SDK 本地存储的最近会话列表。

如果需要 SDK 在转发选择会话时跳转应用程序自定义页面,可以重写 RCConversationViewController 的以下方法,弹出自定义的选择会话界面,选择结束之后,把选中的会话数组回传给 IMKit SDK。

 @param index            0 是逐条转发消息, 1 是合并转发消息。
@param completedBlock 返回需要转发到的会话的列表。

@discussion
开发者如果想更换转发消息的选择会话界面,可以重写此方法,弹出自定义的选择会话界面,选择结束之后,调用completedBlock传入选中的会话即可。
*/
- (void)forwardMessage:(NSInteger)index completed:(void (^)(NSArray<RCConversation *> *conversationList))completedBlock;
@end

您还可以参考融云 SealTalk 应用中的实现方式。详见 RCDChatViewController.mforwardMessage 方法。

- (void)forwardMessage:(NSInteger)index completed:(void (^)(NSArray<RCConversation *> *))completedBlock {
RCDForwardSelectedViewController *forwardSelectedVC = [[RCDForwardSelectedViewController alloc] init];
UINavigationController *navi = [[UINavigationController alloc] initWithRootViewController:forwardSelectedVC];
navi.modalPresentationStyle = UIModalPresentationFullScreen;
[forwardSelectedVC setSelectConversationCompleted:^(NSArray<RCConversation *> *_Nonnull conversationList) {
completedBlock(conversationList);
}];
[self.navigationController presentViewController:navi animated:YES completion:nil];
}