跳到主要内容

文件消息

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

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

局限

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

用法

IMKit 内置的 FilePlugin 实现了扩展面板中的文件消息功能。您也可以参考 IMKit 源码中的 FilePlugin.java

发送文件消息

扩展面板里默认带有发送文件消息入口。用户点击输入栏右侧 + 号按钮可展开扩展面板,点击文件图标,即可发送文件消息。

extension(width=250)

定制化

修改默认文件保存位置

客户端接收文件消息后,在会话页面中长按保存时,SDK 默认保存到 /RongCloud/File/ 下。您可以在应用程序目录下创建 res/values/rc_config 文件,全局修改默认保存位置:

<string name="rc_file_default_saved_path">/RongCloud/File/</string>

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

文件消息(FileMessage)在会话界面中显示时,会根据消息携带的文件类型展示匹配的图标。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 可以按需更新指定图标,替换全部图标,或增加文件类型(扩展名)及图标。

建议在初始化前调用。

RongConfigCenter.conversationConfig().registerFileSuffixTypes(map);
参数类型说明
mapHashMap<String, Integer>文件消息图标配置。key 是不带 . 的文件扩展名(例:png、pdf)。value 是 Android 资源 ID,App 需要把图标添加到 drawable 资源目录中。如果要替换统一默认文件图标,key 使用 default 进行配置。

自定义文件消息的 UI

文件消息使用 FileMessageItemProvider 模板展示在消息列表中。如果需要调整内置消息样式,建议自行实现消息展示模板类,并将该自定义模板提供给 SDK。所有消息模板都继承自 BaseMessageItemProvider<CustomMessage>,自定义消息展示模板也需要继承 BaseMessageItemProvider<CustomMessage>。详见修改消息的展示样式

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

隐藏文件消息入口

IMKit 默认在扩展面板中启用了文件消息入口。如需动态修改,可创建自定义的扩展面板配置类 MyExtensionConfig,继承自 DefaultExtensionConfig,重写其中的 getPluginModules() 方法。详见输入区域扩展面板