文件消息
用户可以通过 IMKit 内置的文件插件发送文件消息。消息将出现在会话页面的消息列表组件中。文件插件默认发送的消息包含文件消息内容对象 FileMessage(类型标识:RC:FileMsg
)
局限
- 仅支持发送本地文件。
- 文件消息中的文件默认会上传到融云的服务器。如需上传到自己的服务器,您需要拦截消息,自行上传。详见拦截消息。
- 不支持在 IMKit 中预览文件,请在 UI 中选择用其他应用打开。
用法
IMKit 内置的 FilePlugin
实现了扩展面板中的文件消息功能。您也可以参考 IMKit 源码中的 FilePlugin.java。
发送文件消息
扩展面板里默认带有发送文件消息入口。用户点击输入栏右侧 +
号按钮可展开扩展面板,点击文件图标,即可发送文件消息。
定制化
修改默认文件保存位置
客户端接收文件消息后,在会话页面中长按保存时,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);
参数 | 类型 | 说明 |
---|---|---|
map | HashMap<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()
方法。详见输入区域扩展面板。