手把手教集成环信新版UIKit组件,快速构建Android应用

本文主要是介绍手把手教集成环信新版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 为必填参数,nameavatar 用于展示当前用户昵称和头像。发送消息时,将 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设计资源(欢迎点赞收藏):‍https://www.figma.com/community/file/1327193019424263350‍

这篇关于手把手教集成环信新版UIKit组件,快速构建Android应用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/846580

相关文章

在Ubuntu上部署SpringBoot应用的操作步骤

《在Ubuntu上部署SpringBoot应用的操作步骤》随着云计算和容器化技术的普及,Linux服务器已成为部署Web应用程序的主流平台之一,Java作为一种跨平台的编程语言,具有广泛的应用场景,本... 目录一、部署准备二、安装 Java 环境1. 安装 JDK2. 验证 Java 安装三、安装 mys

Python中构建终端应用界面利器Blessed模块的使用

《Python中构建终端应用界面利器Blessed模块的使用》Blessed库作为一个轻量级且功能强大的解决方案,开始在开发者中赢得口碑,今天,我们就一起来探索一下它是如何让终端UI开发变得轻松而高... 目录一、安装与配置:简单、快速、无障碍二、基本功能:从彩色文本到动态交互1. 显示基本内容2. 创建链

SpringCloud集成AlloyDB的示例代码

《SpringCloud集成AlloyDB的示例代码》AlloyDB是GoogleCloud提供的一种高度可扩展、强性能的关系型数据库服务,它兼容PostgreSQL,并提供了更快的查询性能... 目录1.AlloyDBjavascript是什么?AlloyDB 的工作原理2.搭建测试环境3.代码工程1.

Golang使用etcd构建分布式锁的示例分享

《Golang使用etcd构建分布式锁的示例分享》在本教程中,我们将学习如何使用Go和etcd构建分布式锁系统,分布式锁系统对于管理对分布式系统中共享资源的并发访问至关重要,它有助于维护一致性,防止竞... 目录引言环境准备新建Go项目实现加锁和解锁功能测试分布式锁重构实现失败重试总结引言我们将使用Go作

Node.js 中 http 模块的深度剖析与实战应用小结

《Node.js中http模块的深度剖析与实战应用小结》本文详细介绍了Node.js中的http模块,从创建HTTP服务器、处理请求与响应,到获取请求参数,每个环节都通过代码示例进行解析,旨在帮... 目录Node.js 中 http 模块的深度剖析与实战应用一、引言二、创建 HTTP 服务器:基石搭建(一

SpringBoot使用注解集成Redis缓存的示例代码

《SpringBoot使用注解集成Redis缓存的示例代码》:本文主要介绍在SpringBoot中使用注解集成Redis缓存的步骤,包括添加依赖、创建相关配置类、需要缓存数据的类(Tes... 目录一、创建 Caching 配置类二、创建需要缓存数据的类三、测试方法Spring Boot 熟悉后,集成一个外

Docker集成CI/CD的项目实践

《Docker集成CI/CD的项目实践》本文主要介绍了Docker集成CI/CD的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录一、引言1.1 什么是 CI/CD?1.2 docker 在 CI/CD 中的作用二、Docke

SpringBoot集成SOL链的详细过程

《SpringBoot集成SOL链的详细过程》Solanaj是一个用于与Solana区块链交互的Java库,它为Java开发者提供了一套功能丰富的API,使得在Java环境中可以轻松构建与Solana... 目录一、什么是solanaj?二、Pom依赖三、主要类3.1 RpcClient3.2 Public

Android数据库Room的实际使用过程总结

《Android数据库Room的实际使用过程总结》这篇文章主要给大家介绍了关于Android数据库Room的实际使用过程,详细介绍了如何创建实体类、数据访问对象(DAO)和数据库抽象类,需要的朋友可以... 目录前言一、Room的基本使用1.项目配置2.创建实体类(Entity)3.创建数据访问对象(DAO

SpringBoot3集成swagger文档的使用方法

《SpringBoot3集成swagger文档的使用方法》本文介绍了Swagger的诞生背景、主要功能以及如何在SpringBoot3中集成Swagger文档,Swagger可以帮助自动生成API文档... 目录一、前言1. API 文档自动生成2. 交互式 API 测试3. API 设计和开发协作二、使用