附件类文件存储在环信和不存储在环信时的两种实现方式

news2024/11/14 18:21:21

场景一: 附件类文件存储在环信服务器

使用环信EMChatManager#downloadAttachment下载附件方案
(本篇文章以图片消息为例,其他附件类消息类似):

一、 通过EMFileMessageBody#getLocalUrl判断有没有本地文件;


EMImageMessageBody imgBody = (EMImageMessageBody) message.getBody();
      //本地文件的资源路径 
      String imageLocalUrl = imgBody.getLocalUrl();

在这里插入图片描述
1 、 如果存在本地路径,直接使用本地文件;(本案例使用的Glide)

      Glide.with(this).load(imageLocalUrl).into(image);

2. 如果不存在本地文件,调用EMChatManager#downloadAttachment下载,下载成功后展示图片;(本案例使用的Glide)

EMMessage msg = EMClient.getInstance().chatManager().getMessage(msgId);
    EMCallBack callback = new EMCallBack() {
          public void onSuccess() {
               EMLog.e(TAG, "onSuccess" );
               runOnUiThread(new Runnable() {
                @Override
                 public void run() {
                      Uri localUrlUri = ((EMImageMessageBody) msg.getBody()).getLocalUri();
                      Glide.with(mContext)
                             .load(localUrlUri)
                             .apply(new RequestOptions().error(default_res))
                             .into(image);
                      }
              });
           }

        public void onError(final int error, String message) {
             EMLog.e(TAG, "offline file transfer error:" + message);
         }
 
        public void onProgress(final int progress, String status) {
              EMLog.d(TAG, "Progress: " + progress);
            }
      };
       msg.setMessageStatusCallback(callback);
      EMClient.getInstance().chatManager().downloadAttachment(msg);

二、 如果对本地存储的路径有特殊要求:

1 可以先通过EMFileMessageBody#setlocalUrl去修改路径;
2 然后再调用EMChatManager#downloadAttachment下载(下载操作可以参考上边);

EMImageMessageBody imgBody = (EMImageMessageBody) message.getBody();
//本地文件的资源路径 
imgBody.setLocalUrl(localUrl);

在这里插入图片描述

场景二: 附件类文件存储在自己服务器

一、发送自定义消息时,携带文件存储的url;

EMMessage customMessage =EMMessage.createSendMessage(EMMessage.Type.CUSTOM);
  // `event` 为需要传递的自定义消息事件,比如礼物消息,可以设置:
        String event = "gift";
        EMCustomMessageBody customBody = new EMCustomMessageBody(event);
        // `params` 类型为 `Map`。
        Map params = new HashMap<>();
        params.put("imageUrl","服务器的图片url");
        customBody.setParams(params);
        customMessage.addBody(customBody);
        // `to` 指另一方环信用户 ID(或者群组 ID,聊天室 ID)
        customMessage.setTo(to);
        // 如果是群聊,设置 `ChatType` 为 `GroupChat`,该参数默认是单聊(`Chat`)。
        customMessage.setChatType(chatType);
        EMClient.getInstance().chatManager().sendMessage(customMessage);

在这里插入图片描述

二 、接收消息时,解析字段获取到url,进行下载;

在这里插入图片描述

@Override
   public void onMessageReceived(List messages) {
        super.onMessageReceived(messages);
        for (EMMessage message : messages) {
            EMCustomMessageBody emCustomMessageBody = (EMCustomMessageBody) message.getBody();
            Map params = emCustomMessageBody.getParams();
            String imageUrl = params.get("imageUrl");
        }
    }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/708264.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ROS学习篇之硬件准备(零)-thinkbook16+锐龙版 安装ubuntu20.04遇到的各种坑

文章目录 一.计算机配置二.遇到的问题及解决办法1.键盘失灵2.无法联wifi3.蓝牙搜索不到设备4.无法开热点 三.最后的感想 一.计算机配置 CPU: AMD R7 6800H &#xff08;网卡&#xff0c;娱乐大师读出来的不对&#xff0c;在windos系统下&#xff0c;联想管家读出来网卡的型号是…

C++数据结构笔记(5)栈的顺序存储结构实现

1.对于栈和队列&#xff0c;相比于数组和线性表&#xff0c;使用规则受到了限制&#xff0c;因此也被称为“受限线性表”。 2.对于栈类型来说&#xff0c;元素符合先进后出的规律&#xff0c;且栈中的元素不能自由遍历。 3.栈的顺序存储结构简称为顺序栈&#xff0c;其思想是…

神经网络之VGG

目录 1.VGG的简单介绍 1.2结构图 3.参考代码 VGGNet-16 架构&#xff1a;完整指南 |卡格尔 (kaggle.com) 1.VGG的简单介绍 经典卷积神经网络的基本组成部分是下面的这个序列&#xff1a; 带填充以保持分辨率的卷积层&#xff1b; 非线性激活函数&#xff0c;如ReLU&a…

制作投票链接小程序教程,让你的活动更具吸引力与效果

相信投票链接是一种方便快捷的投票方式&#xff0c;不仅可以用于活动中的投票&#xff0c;还可以用于品牌营销和市场调研。投票链接是一种非常方便的方式来进行在线投票。这里就推荐一个免费制作投票活动的网站&#xff1a;乔拓云&#xff0c;创建简单、免费使用、操作灵活。支…

Linux环境搭建(三)— 搭建数据库服务器

linux &#xff08;ubuntu&#xff09;安装mysql 和环境配置 一、安装MySql二、配置环境三、外网访问四、重置密码五、卸载 写在前面&#xff1a; 本文默认你的Linux系统已经安装vim&#xff0c;yum等&#xff0c;如你使用的是一个全新的操作系统&#xff0c;移步上一篇开始配置…

回波数据adc_data.bin解析(附MATLAB程序)

毫米波雷达系统性能参数分析 1、xWR1642—DCA1000 TI目前有两款采集卡TSW1400和DCA1000&#xff0c;可以为xWR1243/1443和1642毫米波雷达进行回波数据采集。本文将主要介绍几款雷达分别用2款采集卡数据采集的回波数据格式以及MATLAB数据解析程序。 1、xWR1642—DCA1000 &…

【Servlet学习二】Servlet原理(Tomcat) ServletAPI

目录 &#x1f31f;一、Servlet运行原理 &#x1f308;1、Servlet的执行原理&#xff08;重点&#xff09; &#x1f308;2、Tomcat伪代码的简单理解 2.1 Tomcat初始化流程 2.2 Tomcat处理请求流程 2.3 Servlet 的 service 方法的实现 &#x1f31f;二、Servlet API 详…

SFP3012-ASEMI代理MHCHXM(海矽美)快恢复二极管SFP3012

编辑&#xff1a;ll SFP3012-ASEMI代理MHCHXM&#xff08;海矽美&#xff09;二极管SFP3012 型号&#xff1a;SFP3012 品牌&#xff1a;MHCHXM&#xff08;海矽美&#xff09; 封装&#xff1a;TO-247AB 恢复时间&#xff1a;≤65ns 正向电流&#xff1a;30A 反向耐压&a…

初学spring5(三)依赖注入(DI)

学习回顾&#xff1a;初学spring (五) 快速上手spring Dependency Injection 一、概念 依赖注入&#xff08;Dependency Injection,DI&#xff09;。依赖 : 指Bean对象的创建依赖于容器 . Bean对象的依赖资源 .注入 : 指Bean对象所依赖的资源 , 由容器来设置和装配 . 二、构造器…

SQL-每日一题【180.连续出现的数字】

题目 表&#xff1a;Logs 编写一个 SQL 查询&#xff0c;查找所有至少连续出现三次的数字。 返回的结果表中的数据可以按 任意顺序 排列。 查询结果格式如下面的例子所示&#xff1a; 示例 1: 解题思路 1.要查询至少连续出现三次的数字&#xff0c;则可以转化为&#xff08;…

软考A计划-系统集成项目管理工程师-项目整体管理-下

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff…

【C#】文件拖拽,获取文件路径

系列文章 【C#】编号生成器&#xff08;定义单号规则、固定字符、流水号、业务单号&#xff09; 本文链接&#xff1a;https://blog.csdn.net/youcheng_ge/article/details/129129787 【C#】日期范围生成器&#xff08;开始日期、结束日期&#xff09; 本文链接&#xff1a;h…

vue2实现一个上边为搜索,下面为复选框选中后,右侧显示已选中组件

目录 vue2实现一个上边为搜索&#xff0c;下面为复选框选中后&#xff0c;右侧显示已选中组件component / ProjectSelectItem.vue使用组件效果 vue2实现一个上边为搜索&#xff0c;下面为复选框选中后&#xff0c;右侧显示已选中组件 component / ProjectSelectItem.vue <…

对于小米随手吸尘器各种问题的初始办法

本人在什么值得买发过&#xff0c;现在只不过是为了让账号看起来更丰盈一点&#xff0c;现在再发一次。 充不进去电/使用的时候短暂吸气&#xff0c;这两个问题&#xff0c;在上个月的时候我就已经发现了这个问题。 然后我就拆开了那个主机&#xff0c;就是那个保温杯一样的东…

SpringCloud(3) Ribbon负载均衡,负载均衡策略,自定义负载均衡

目录 1.Ribbon负载均衡流程2.Ribbon负载均衡策略3.自定义负载均衡策略如何实现4.总结 1.Ribbon负载均衡流程 假设我们有一台 order-service 订单服务&#xff0c;两台 user-service 用户服务&#xff0c;当订单服务需要调用用户服务获取用户信息的时候&#xff0c;应该怎么分配…

Windows下mysql 8.0.11 安装教程

http://www.jb51.net/article/140950.htm &#xff1a;此文章注意my.ini的扩展名 MySQL安装参考&#xff1a;mysql-8.0.11-winx64.zip在Windows中的安装配置-百度经验 MySQL卸载&#xff1a;https://blog.csdn.net/cxy_summer/article/details/70142322 下载最新的MySQL 1、…

经商必看的10本书籍推荐

1、《经理人参阅&#xff1a;商业模式与商业思维》 这本书被誉为商业模式的圣经。该书通过可视化工具&#xff0c;包括商业模式画布和价值主张画布&#xff0c;帮助企业家、创业者和经理人创造创新的商业模式。本书通过图表、图像和实例&#xff0c;详细讲解了商业模式的构建方…

智慧饮品未来发展方向:点赋科技AI智能饮品机器人的崛起

随着人们对健康饮品的追求和科技的不断创新&#xff0c;智慧饮品正在迅速崛起并成为未来饮品市场的热点。其中&#xff0c;AI智能饮品机器人作为一种创新的服务形式&#xff0c;将在未来发展中扮演重要角色。点赋科技将探讨智慧饮品市场的未来发展方向以及AI智能饮品机器人的潜…

URL(URI) 中的编码与乱码(下)--查询字符串(query string)中的编码

在上篇中, 初步谈论了 URL 中含有中文字符时的转义编码, 提到了所使用的编码是 utf-8. 不过你可能会有点疑问, 一定都是要用 utf-8 编码吗? 还是因为页面编码本身是 utf-8 的缘故呢? 毕竟在那个例子中, 页面的编码也恰好是 utf-8. 在 GBK 编码页面下的 URL 转义 这次, 将继…

Linux10.地址空间

1.几乎所有的语言&#xff0c;如果它有地址的概念&#xff0c;这个地址一定不是物理地址&#xff0c;是虚拟地址(线性地址)。 2.诸如网卡&#xff0c;硬盘和显卡等外设内部也具有寄存器。 3.在makefile中&#xff0c;gcc -o 文件A 文件1 文件2(…)可以写成 :gcc -o $ $^ 4.地…