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

前言

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

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

在环信旧版UIkit 中,很多开发者比较头疼的是头像昵称问题,新版UIkit 将解决这一烦恼。新的UIkit从消息扩展中获取昵称和头像,把用户基本的昵称和头像的URL放到消息的扩展中,通过消息传递给接收方,当收到一条消息时,则能通过消息的扩展得到发送者的昵称和头像URL,然后保存到本地数据库和缓存。当显示昵称和头像时进行获取。

此外,新版UIkit 使用的是Kotlin语言进行开发,目前支持本地module 形式的导入,远程依赖可以关注官网后续更新。

官方文档链接

1、本地module 导入

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

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

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

在settings.gradle.kts 下进行添加

kotlin 复制代码
include(":ease-im-kit")

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

kotlin 复制代码
implementation(project(mapOf("path" to ":ease-im-kit")))

导入以后编译项目即可

2、头像昵称的使用

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

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

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

kotlin 复制代码
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 会进行处理,聊天页面就可以进行头像跟昵称的展示了

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

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

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

kotlin 复制代码
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 了解更多功能。

参考文档

相关推荐
Kapaseker1 小时前
你一定会喜欢的 Compose 形变动画
android
QuZhengRong1 小时前
【数据库】Navicat 导入 Excel 数据乱码问题的解决方法
android·数据库·excel
zhangphil2 小时前
Android Coil3视频封面抽取封面帧存Disk缓存,Kotlin(2)
android·kotlin
程序员码歌9 小时前
【零代码AI编程实战】AI灯塔导航-总结篇
android·前端·后端
书弋江山10 小时前
flutter 跨平台编码库 protobuf 工具使用
android·flutter
来来走走13 小时前
Flutter开发 webview_flutter的基本使用
android·flutter
Jerry说前后端13 小时前
Android 组件封装实践:从解耦到架构演进
android·前端·架构
louisgeek14 小时前
Android OkHttp Interceptor
android
大王派来巡山的小旋风14 小时前
Kotlin基本用法三
android·kotlin
Jerry说前后端15 小时前
Android 移动端 UI 设计:前端常用设计原则总结
android·前端·ui