转发消息
Global IM UIKit 支持对单条消息转发,和对多条消息的逐条转发/合并转发的功能,允许用户在聊天页面中将消息转发到其他会话中。转发后消息将出现在目标会话页面的消息列表组件中。
Global IM UIKit 默认未启用合并转发功能。您可以按需启用合并转发功能。
局限
- 并非所有消息类型均支持逐条转发。
- 支持逐条转发的消息类型:文本、语音、小视频、图片、文件、图文、表情贴纸(
RC:StkMsg
)、位置、合并、引用。 - 不支持的情况:未在支持列表中的消息类型,以及未发送成功的消息等特殊情况不支持转发。
- 支持逐条转发的消息类型:文本、语音、小视频、图片、文件、图文、表情贴纸(
- 并非所有消息类型均支持合并转发。
- 支持的消息类型:文本、图片、GIF、表情贴纸(
RC:StkMsg
)、小视频、文件、普通语音、高清语音、合并转发。 - 不支持的情况:未在支持列表中的消息类型,例如名片、位置、图文、引用消息、小灰条(
RC:InfoNtf
)、命令提醒消息(RC:CmdNtf
),以及未发送成功的消息等特殊情况不支持转发。自定义消息均不支持合并转发。
- 支持的消息类型:文本、图片、GIF、表情贴纸(
- 合并转发支持合并最多 100 条消息。
用法
Global IM UIKit 会话页面默认已启用转发功能。用户在会话页面长按消息,在弹框里选择更多,即可展示转发消息选项。
逐条转发
逐条转发:默认开启。可转发单聊或多条消息至目标会话。点击逐条转发的回调是 ChatFragment
中的 forwardMessageByStep()
, 重写该方法,可跳转到选择转发的会话,选择结束后,根据所选择的会话类型进行发 送消息。示例代码如下:
// 加载会话列表,选择会话页(示例)
ChatListViewModel chatListViewModel = new ViewModelProvider(this).get(ChatListViewModel.class);
mChatListComponent.setPagedDataLoader(chatListViewModel);
chatListViewModel.init();
chatListViewModel.getChatListLiveData().observe(this, baseChatModels -> mChatListComponent.setChatListData(baseChatModels));
// 选择一个会话发送消息 (示例)
for (Message message : messageList) {
MessageContent messageContent = message.getContent();
if (messageContent != null) {
messageContent.setUserInfo(null);
// 如果是@消息 则取消不生效
if (messageContent.getMentionedInfo() != null) {
messageContent.setMentionedInfo(null);
}
}
MessageContent messageContent = message.getContent();
boolean isImageMessageRemoteUriEmpty = messageContent instanceof ImageMessage && ((ImageMessage) messageContent).getRemoteUri() == null;
boolean isGifMessageRemoteUriEmpty = messageContent instanceof GIFMessage && ((GIFMessage) messageContent).getRemoteUri() == null;
boolean isMediaMessageRemoteUriEmpty = messageContent instanceof MediaMessageContent && (((MediaMessageContent) messageContent).getMediaUrl() == null || TextUtils.isEmpty(((MediaMessageContent) messageContent).getMediaUrl().toString()));
if (isImageMessageRemoteUriEmpty || isGifMessageRemoteUriEmpty || isMediaMessageRemoteUriEmpty) {
RongCoreClient.getInstance().sendMediaMessage();
} else {
RongCoreClient.getInstance().sendMessage();
}
}
合并转发
合并转发:默认开启。如果合并转发,SDK 会将选中的消息合并为一条合并转发消息,包含消息内容对象 CombineV2Message
(类型标识:RC:CombineV2Msg
)。合并转发的消息默认折叠显示,可点击展开。点击合并转发的回调是 ChatFragment
中的 forwardMessageByCombine()
, 重写该方法,跳转到选择转发的会话,选择结束后,调用 ViewModel
的 onSendCombineMessage()
转发合并消息,代码示例如下:
// 加载会话列表,选择会话页(示例)
ChatListViewModel chatListViewModel = new ViewModelProvider(this).get(ChatListViewModel.class);
mChatListComponent.setPagedDataLoader(chatListViewModel);
chatListViewModel.init();
chatListViewModel.getChatListLiveData().observe(this, baseChatModels -> mChatListComponent.setChatListData(baseChatModels));
// 选择一个会话发送消息 (示例)
getViewModel().getMessageSender().onSendCombineMessage(conversationIdentifier, messages);