前言
环信新版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
对象,包含 id、name 和 avatar 三个属性。id 为必填参数,**name **和 avatar 用于展示当前用户昵称和头像。发送消息时,将 name 和 avatar 属性设置到消息的 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/