环信新版单群聊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 了解更多功能。

参考文档

相关推荐
不爱学习的啊Biao几秒前
【13】MySQL如何选择合适的索引?
android·数据库·mysql
Clockwiseee28 分钟前
PHP伪协议总结
android·开发语言·php
mmsx7 小时前
android sqlite 数据库简单封装示例(java)
android·java·数据库
众拾达人10 小时前
Android自动化测试实战 Java篇 主流工具 框架 脚本
android·java·开发语言
吃着火锅x唱着歌11 小时前
PHP7内核剖析 学习笔记 第四章 内存管理(1)
android·笔记·学习
_Shirley12 小时前
鸿蒙设置app更新跳转华为市场
android·华为·kotlin·harmonyos·鸿蒙
hedalei14 小时前
RK3576 Android14编译OTA包提示java.lang.UnsupportedClassVersionError问题
android·android14·rk3576
锋风Fengfeng14 小时前
安卓多渠道apk配置不同签名
android
枫_feng14 小时前
AOSP开发环境配置
android·安卓
叶羽西15 小时前
Android Studio打开一个外部的Android app程序
android·ide·android studio