跳到主要内容

文件消息

用户可以通过 IMKit 内置的文件插件发送文件消息。消息将出现在会话页面的消息列表组件中。文件插件默认发送的消息包含文件消息内容对象 RCFileMessage(类型标识:RC:FileMsg

message-file-unread(width=250) (width=250)

局限

  • 仅支持发送本地文件。
  • 文件消息中的文件默认会上传到融云的服务器。如需上传到自己的服务器,您需要拦截消息,自行上传。详见拦截消息
  • 不支持在 IMKit 中预览文件,请在 UI 中选择用其他应用打开。

用法

IMKit 内置的 File 插件实现了扩展面板中的文件消息功能。但是为了向后兼容,目前 SDK 默认不开启该功能入口。

您可以在会话页面 viewDidLoad 中添加以下代码,以支持发送文件功能。

[self.chatSessionInputBarControl.pluginBoardView insertItem:RCResourceImage(@"plugin_item_file")   highlightedImage:RCResourceImage(@"plugin_item_file_highlighted")
title:RCLocalizedString(@"File")
atIndex:3
tag:PLUGIN_BOARD_ITEM_FILE_TAG];

发送文件消息

启用文件消息功能后,扩展面板会出现发送文件消息入口。用户点击输入栏右侧 + 号按钮可展开扩展面板,点击文件图标,即可发送文件消息。

extension(width=250)

定制化

替换文件消息默认的文件图标

文件消息(RCFileMessage)在会话界面中显示时,会根据消息携带的文件类型展示匹配的图标。SDK 默认为以下类型的文件提供了匹配的图标,如果为其他类型文件,则默认显示统一的默认图标。

  • 图片类:bmp、cod、gif、ief、jpe、jpeg、jpg、jfif、svg、tif、tiff、ras、ico、pbm、pgm、png、pnm、ppm、xbm、xpm、xwd、rgb
  • 文本类:txt、log、html、stm、uls、bas、c、h、rtx、sct、tsv、htt、htc、etx、vcf
  • 视频类:rmvb、avi、mp4、mp2、mpa、mpe、mpeg、mpg、mpv2、mov、qt、lsf、lsx、asf、asr、asx、avi、movie、wmv
  • 音频类:mp3、au、snd、mid、rmi、aif、aifc、aiff、m3u、ra、ram、wav、wma
  • Word 类:doc、dot、docx
  • Excel 类:xla、xlc、xlm、xls、xlt、xlw、xlsx

SDK 从 5.3.4 版本开始,支持 App 修改文件类型(扩展名)对应显示的图标。App 可以按需更新指定图标,替换全部图标,或增加文件类型(扩展名)及图标。注意,统一的默认图标暂无法替换。

[RCKitConfigCenter.ui registerFileSuffixTypes:types];
参数类型说明
typesNSDictionary文件消息图标配置。key 是不带 . 的文件扩展名(例:png、pdf)。value 是本地文件路径。如果文件路径为空或者路径下的文件不存在,会使用 RongCloud.bundle 中的默认图标。本地文件路径下的图片尺寸请参考 RongCloud.bundle 中对应的文件图标。

自定义文件消息的 UI

文件消息使用 RCFileMessageCell 展示在消息列表中。如果需要调整内置消息样式,建议自定义消息 Cell,并将该自定义 Cell 提供给 SDK。IMKit 中所有消息模板都继承自 RCMessageCell,自定义消息 Cell 也需要继承 RCMessageCell。详见修改消息的展示样式

您也可以直接替换 RongCloud.bundle 中文件消息展示模板中引用的样式资源、字符串资源和图标资源。详见 IMKit 源码 RCFileMessageCell.m 中引用的资源。

自定义发送文件页 UI

  • 右上角按钮未选择文件时颜色:可通过 color.plistfileSelect 字典里的相关字段来更改。

  • 左上、右上角按钮:设置 SDK 全局导航按钮颜色。

    RCKitConfigCenter.ui.globalNavigationBarTintColor = [UIColor whiteColor];
  • 右上角按钮选中文件时的颜色:设置 SDK 全局导航按钮颜色。

    RCKitConfigCenter.ui.globalNavigationBarTintColor = [UIColor whiteColor];

隐藏文件消息入口

如需动态修改,可在会话页面显示前,通过 RCConversationViewControllerchatSessionInputBarControl.pluginBoardView 删除指定扩展项目。

详见输入区域