当前位置: 首页 > news >正文

环信新版单群聊UIKit集成指南——Android篇

前言

环信新版UIKit已重磅发布!目前包含单群聊UIKit、聊天室ChatroomUIKit,本文详细讲解Android端单群聊UIKit的集成教程。

环信单群聊 UIKit 是基于环信即时通讯云 IM SDK 开发的一款即时通讯 UI 组件库,提供各种组件实现会话列表、聊天界面、联系人列表及后续界面等功能,帮助开发者根据实际业务需求快速搭建包含 UI 界面的即时通讯应用。

在环信旧版UIkit 中,很多开发者比较头疼的是头像昵称问题,新版UIkit 将解决这一烦恼。新的UIkit从消息扩展中获取昵称和头像,把用户基本的昵称和头像的URL放到消息的扩展中,通过消息传递给接收方,当收到一条消息时,则能通过消息的扩展得到发送者的昵称和头像URL,然后保存到本地数据库和缓存。当显示昵称和头像时进行获取。
此外,新版UIkit 使用的是Kotlin语言进行开发,目前支持本地module 形式的导入,远程依赖可以关注官网后续更新。

官方文档链接

  • 新版UIkit 官方文档
  • 新版UIkit 源码
  • 旧版UIkit 官方文档
  • 旧版UIkit 源码

1、本地module 导入

集成条件以及环境配置需要参考文档 :
https://doc.easemob.com/uikit/chatuikit/android/chatuikit_quickstart.html

本地module 导入可以选择File - new - import module 进行导入。

在这里插入图片描述

部分项目按照上面可能会导入失败。可以选择把 ease-im-kit 放到跟app 一个级别下面,手动进行配置。
在settings.gradle.kts 下进行添加

include(":ease-im-kit")

在这里插入图片描述

在app module 下进行添加本地依赖

implementation(project(mapOf("path" to ":ease-im-kit")))

在这里插入图片描述

导入以后编译项目即可

2、头像昵称的使用

用户调用 EaseIM.login 方法登录时需要传入一个 EaseProfile 对象,包含 idnameavatar 三个属性。id 为必填参数,**name **和 avatar 用于展示当前用户昵称和头像。发送消息时,将 nameavatar 属性设置到消息的 ext 中,方便其他用户进行展示。

EaseIM.login(user = EaseProfile(id = "",name = "",avatar = ""),token = "", onSuccess = {}, onError = {code,error ->}
)

这里登录时进行了设置。发消息时把头像昵称进行携带在了扩展字段里面,扩展字段key 如下

exts: [{key: ease_chat_uikit_user_info,type: 8,value: {"nickname": "小刚","avatarURL": "https:\/\/img0.baidu.com\/it\/u=4105778329,1297102594&fm=253&app=120&size=w931&n=0&f=JPEG&fmt=auto?sec=1710954000&t=d0bfcba4c95d2e7b9bc8aaaf870f0582"}}]

接收到消息以后UIKit 会进行处理,聊天页面就可以进行头像跟昵称的展示了

在这里插入图片描述

这里接收到的消息获取到扩展字段解析如下

val jsonObject = JSONObject(message.ext().get("ease_chat_uikit_user_info").toString())
jsonObject.get("nickname").toString()//获取昵称
jsonObject.get("avatarURL").toString()// 获取头像 

3、会话列表进行设置头像昵称

EaseIM.setConversationInfoProvider(object : EaseConversationInfoProvider {// 同步获取会话信息override fun getProfile(id: String?, type: ChatConversationType): EaseProfile? {return when(type) {ChatConversationType.Chat ->{// 可以从本地数据库或者缓存中获取用户信息,并返回,不可进行异步操作。loadUserInfoFromLocal(id)}ChatConversationType.GroupChat -> {// 可以从本地数据库或者缓存中获取群组信息,并返回,不可进行异步操作。loadGroupInfoFromLocal(id)}else -> null}return null}override fun fetchProfiles(idsMap: Map<ChatConversationType, List<String>>,onValueSuccess: OnValueSuccess<List<EaseProfile>>) {fetchProfilesFromServer(idsMap, onValueSuccess)}})

这里可以再接收到消息以后进行更新会话列表的头像昵称,也可以通过从服务端获取,获取到以后进行调用上面方法进行设置。
在上面代码中 loadUserInfoFromLocal(id) 是需要自己进行从本地获取,然后设置到会话列表中,这里也可以再接收消息是进行获取对方的信息进行设置。

4、会话列表的集成与介绍

通过继承 EaseConversationListFragment 进行自定义设置
在这里插入图片描述

EaseConversationListFragment 里面实现了页面跳转逻辑,如果继承EaseConversationListFragment 的情况下需要实现对应的方法即可
也可以直接使用EaseConversationListFragment 进行使用。

至此,集成与头像昵称使用介绍完,要比历史版本头像昵称使用简单很多哦,欢迎使用新的UIkit 了解更多功能。

参考文档

  • 注册环信IM:https://console.easemob.com/user/register

  • 单群聊UIKit集成文档:https://doc.easemob.com/uikit/chatuikit/android/chatuikit_overview.html

  • IMGeek社区支持:https://www.imgeek.net/

相关文章:

环信新版单群聊UIKit集成指南——Android篇

前言 环信新版UIKit已重磅发布&#xff01;目前包含单群聊UIKit、聊天室ChatroomUIKit&#xff0c;本文详细讲解Android端单群聊UIKit的集成教程。 环信单群聊 UIKit 是基于环信即时通讯云 IM SDK 开发的一款即时通讯 UI 组件库&#xff0c;提供各种组件实现会话列表、聊天界…...

最细致最简单的 Arm 架构搭建 Harbor

更好的阅读体验&#xff1a;点这里 &#xff08; www.doubibiji.com &#xff09; ARM离线版本安装 官方提供了一个 arm 版本&#xff0c;但是好久都没更新了&#xff0c;地址&#xff1a;https://github.com/goharbor/harbor-arm 。 也不知道为什么不更新&#xff0c;我看…...

mysql基础02

1.常用函数 字符串处理函数 length(str) 统计字符长度char_length(str) 统计以(单个字符为单位)的字符长度ucase/upper(str) 小写变大写lcase/lower(str) 大写变小写substr(s,start,end) 从s截start到end的字符串instr(str,"str1") str1在str的位置是? trim(str) 去…...

css的box-shadow详解

CSS的box-shadow属性用于在元素框上添加阴影效果。它可以为元素提供外阴影或内阴影&#xff0c;并且可以控制阴影的颜色、偏移距离、模糊半径以及扩展半径。 box-shadow属性的基本语法如下&#xff1a; box-shadow: h-shadow v-shadow blur spread color inset;下面是各个参数…...

递归的个人总结

递归函数&#xff08;递去、回归&#xff09;是函数不断的调用自己&#xff1b; 可以按照如下来理解&#xff1a;func1中调用func2&#xff0c;func2中调用func3; func3函数返回了&#xff0c;继续执行func2中的语句&#xff1b;func2执行完了&#xff0c;继续执行func1之后的…...

使用PDFBox调整PDF每页格式

目录 一、内容没有图片 二、内容有图片 maven依赖&#xff0c;这里使用的是pdfbox的2.0.30版本 <dependency><groupId>org.apache.pdfbox</groupId><artifactId>pdfbox</artifactId><version>2.0.30</version></dependency>…...

【3D reconstruction 学习笔记】

三维重建 3D reconstruction 1. 相机几何针孔相机摄像机几何 2. 相机标定线性方程组的解齐次线性方程组的解非线性方程组的最小二乘解透镜相机标定带畸变的相机标定 3. 单视图重建2D平面上的变换3D空间上的变换单视测量无穷远点 无穷远线 无穷远平面影消点 影消线单视重构 4. 三…...

(附源码)基于Spring Boot与Vue的宠物用品销售系统设计与实现

前言 &#x1f497;博主介绍&#xff1a;✌专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f447;&#x1f3fb; 精彩专栏 推荐订阅&#x1f447;&#x1f3fb; 2024年Java精品实战案例《100套》 &#x1f345;文末获取源码联系&#x1f345; &#x1f31…...

Qwen及Qwen-audio大模型微调项目汇总

Qwen及Qwen-audio可微调项目调研 可用来微调方法/项目汇总ps.大语言模型基础资料 可用来微调方法/项目汇总 Qwen github 项目自带的finetune脚本 可以参考https://blog.csdn.net/qq_45156060/article/details/135153920PAI-DSW中微调千问大模型&#xff08;阿里云的一个产品&a…...

浅析ArcGis中的软件——ArcMap、ArcScene、 ArcGlobe、ArcCatalog

为什么要写这么一篇介绍ArcGis的文章呢&#xff1f;因为大部分人也包括ArcGisdada&#xff0c;在使用ArcMap应用程序创建工程时总以为我们就是使用了ArcGis这个软件的所有。其实不然&#xff0c;在后期的接触和使用中慢慢发现原来ArcMap只是ArcGis这个综合平台的一部分&#xf…...

AndroidStudio插件出现“Compatible with IntelliJ IDEA only“错误时的解决方案

原因:插件比较老&#xff0c;配置可能存在问题 1.修改plugins文件夹下的jar包(插件) 找到AndroidStudio所在位置 打开plugins文件夹,找到需要修改的jar包,通过压缩软件用zip方式打开&#xff0c;找到\META-INF\plugin.xml并编辑&#xff0c;在<version>xxxx</versi…...

探索未来的编程趋势与挑战

摘要&#xff1a; 本文将探讨未来编程领域可能面临的挑战和发展趋势&#xff0c;包括人工智能、量子计算、区块链等新兴技术对编程的影响&#xff0c;以及程序员需要具备的新技能和素质。 随着人工智能技术的快速发展&#xff0c;机器学习、深度学习等算法在编程领域的应用越来…...

第十二届蓝桥杯省赛CC++ 研究生组

十二届省赛题 第十二届蓝桥杯省赛C&C 研究生组-卡片 第十二届蓝桥杯省赛C&C 研究生组-直线 第十二届蓝桥杯省赛C&C 研究生组-货物摆放 第十二届蓝桥杯省赛C&C 研究生组-路径 第十二届蓝桥杯省赛C&C 研究生组-时间显示 第十二届蓝桥杯省赛C&C 研究生组…...

Ubuntu自启GUI程序

问题描述 最近搞了一个项目&#xff0c;程序需要自动启动&#xff0c;系统是Ubuntu&#xff0c;先搞了成服务方式(配置的文章很多&#xff0c;可以自己找找)&#xff0c;程序还是不启动 &#xff0c;最后加到/etc/rc.local文件里面启动&#xff0c;看调试信息&#xff0c;需要…...

【光标精灵】让您享受鼠标皮肤多样化快捷更换

鼠标作为我们日常使用频率最高的“小伙伴”&#xff0c;扮演着至关重要的角色。尤其是在女生群体中&#xff0c;对于打造一个个性化、可爱的电脑桌面和软件界面的需求日益增长。然而&#xff0c;尽管电脑默认提供了一些可更换的光标图案&#xff0c;但仍显得有些单调和呆板。想…...

Vue 常见面试题(一)

目录 1、Vue 的最大的优势是什么&#xff1f;&#xff08;必会&#xff09; 2、Vue 和 jQuery 两者之间的区别是什么&#xff1f;&#xff08;必会&#xff09; 3、MVVM 和 MVC 区别是什么&#xff1f;哪些场景适合&#xff1f;&#xff08;必会&#xff09; 1、基本定义 2…...

Elasticsearch 的 scroll API

对于大量数据&#xff0c;可以使用 Elasticsearch 的 scroll API 来分批次地读取数据&#xff0c;以避免一次性读取所有数据造成的内存负担。这段代码使用滚动查询&#xff08;scroll&#xff09;来分批次地读取数据。首先&#xff0c;它发送初始的搜索请求&#xff0c;并获取第…...

Leedcode刷题——2 字符串

注&#xff1a;以下代码均为c 1. 反转字符串 void reverseString(vector<char>& s) {int n s.size();int i, j;for(i 0, j n - 1; i < j; i, j--){swap(s[i], s[j]);}}2. 整数反转 int reverse(int x) {int rev 0;while(x ! 0){if(rev < INT_MIN / 10 || …...

2016年认证杯SPSSPRO杯数学建模B题(第二阶段)多帧图像的复原与融合全过程文档及程序

2016年认证杯SPSSPRO杯数学建模 B题 多帧图像的复原与融合 原题再现&#xff1a; 数码摄像技术被广泛使用于多种场合中。有时由于客观条件的限制&#xff0c;拍摄设备只能在较低的分辨率下成像。为简单起见&#xff0c;我们只考虑单色成像。假设成像的分辨率为 32 64&#x…...

WMI接口设计实现

WMI是Windows操作系统管理数据和操作的基础设施&#xff0c;系统管理员可以使用VB Script、PowerShell及Windows API&#xff08;C、C#等&#xff09;管理本地或远程计算机。 使用WMI框架应用程序可以直接访问EC RAM、 I/O端口、Memory地址、寄存器、Setup NV设定值&#xff0c…...

Draw.io ECE终极指南:如何快速创建专业电路图(免费开源工具)

Draw.io ECE终极指南&#xff1a;如何快速创建专业电路图&#xff08;免费开源工具&#xff09; 【免费下载链接】Draw-io-ECE Custom-made draw.io-shapes - in the form of an importable library - for drawing circuits and conceptual drawings in draw.io. 项目地址: h…...

【实战】MemPalace 完整安装与使用指南

未来已来&#xff0c;只需一句指令&#xff0c;养龙虾专栏导航&#xff0c;持续更新ing… 什么是 MemPalace&#xff1f; MemPalace 是由好莱坞演员 Milla Jovovich&#xff08;《生化危机》《第五元素》主演&#xff09;与开发者 Ben Sigman 共同开发的本地 AI 记忆管理系统…...

零基础小白也能搞定!PyTorch 2.9-CUDA镜像保姆级入门教程

零基础小白也能搞定&#xff01;PyTorch 2.9-CUDA镜像保姆级入门教程 你是不是也遇到过这样的情况&#xff1a;看到别人用PyTorch做AI项目很酷&#xff0c;自己也想试试&#xff0c;结果第一步就被“环境配置”给劝退了&#xff1f;CUDA版本、PyTorch版本、各种依赖包……光是…...

探索视觉框架VM PRO 2.7:强大功能与实践指南

视觉框架VM PRO 2.7版本&#xff0c;增加了机器人 流程框架 多任务流程 C#源码框架&#xff0c;机器视觉源码框架&#xff0c;编程语言C#&#xff0c;算法使用的是halcon&#xff0c;参考了cognex visionpro的输入输出&#xff0c;有C#基础和Halcon基础学习这个很好&#xff0c…...

从夯到拉,锐评大模型岗位!收藏这份进阶指南,小白程序员也能抓住AI红利!

本文详细解析了大模型领域的不同岗位&#xff0c;从底层架构的夯岗位到应用开发的拉岗位&#xff0c;涵盖了预训练工程师、Infra工程师、基座模型优化、后训练、多模态、应用开发工程师、数据工程师、风控/安全、模型评估和Prompt工程师等。文章强调了当前大模型领域的人才缺口…...

Tensorflow离线安装全攻略:从whl下载到ARM架构适配(附资源链接)

TensorFlow离线安装全攻略&#xff1a;从whl下载到ARM架构适配 在边缘计算和嵌入式开发领域&#xff0c;离线环境下的TensorFlow部署一直是工程师们的痛点。想象一下&#xff0c;当你带着开发板深入工厂现场调试&#xff0c;或是需要在保密网络中进行AI模型部署时&#xff0c;…...

Ostrakon-VL-8B商业应用:自动识别促销堆头高度/位置/物料完整性标准

Ostrakon-VL-8B商业应用&#xff1a;自动识别促销堆头高度/位置/物料完整性标准 1. 引言 如果你在零售行业工作&#xff0c;特别是负责门店运营或市场促销&#xff0c;一定遇到过这样的烦恼&#xff1a;公司花大价钱设计的促销堆头&#xff0c;到了门店执行时却五花八门。有的…...

Linux学习笔记(二十一)--网络编程套接字

源IP地址和目的IP地址源IP地址&#xff1a;标识数据包的发送者&#xff0c;即数据产生的源头主机。 目的IP地址&#xff1a;标识数据包的接收者&#xff0c;即数据最终要到达的目标主机。端口号概念&#xff1a;端口号是一个2字节16位的整数;端口号用来标识一个进程, 告诉操作系…...

10个Python数据分析实战技巧:从入门到精通的完整指南

10个Python数据分析实战技巧&#xff1a;从入门到精通的完整指南 【免费下载链接】Bioinformatics-with-Python-Cookbook-Second-Edition 项目地址: https://gitcode.com/gh_mirrors/bi/Bioinformatics-with-Python-Cookbook-Second-Edition 想要快速掌握Python数据分析…...

解决MoveIt!双臂仿真痛点:手把手教你写Gazebo通信中间节点(Python代码详解)

MoveIt!与Gazebo双臂仿真通信桥梁构建实战指南 在机器人仿真开发中&#xff0c;MoveIt!与Gazebo的协同工作一直是开发者面临的挑战之一&#xff0c;特别是在多机械臂场景下。当我们在独立命名空间中运行多个move_group节点时&#xff0c;系统原有的通信机制会失效&#xff0c;导…...