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

参考文档

相关推荐
小蜜蜂嗡嗡15 分钟前
Android Studio flutter项目运行、打包时间太长
android·flutter·android studio
aqi0022 分钟前
FFmpeg开发笔记(七十一)使用国产的QPlayer2实现双播放器观看视频
android·ffmpeg·音视频·流媒体
zhangphil2 小时前
Android理解onTrimMemory中ComponentCallbacks2的内存警戒水位线值
android
你过来啊你2 小时前
Android View的绘制原理详解
android
移动开发者1号5 小时前
使用 Android App Bundle 极致压缩应用体积
android·kotlin
移动开发者1号5 小时前
构建高可用线上性能监控体系:从原理到实战
android·kotlin
ii_best10 小时前
按键精灵支持安卓14、15系统,兼容64位环境开发辅助工具
android
美狐美颜sdk10 小时前
跨平台直播美颜SDK集成实录:Android/iOS如何适配贴纸功能
android·人工智能·ios·架构·音视频·美颜sdk·第三方美颜sdk
恋猫de小郭15 小时前
Meta 宣布加入 Kotlin 基金会,将为 Kotlin 和 Android 生态提供全新支持
android·开发语言·ios·kotlin
aqi0015 小时前
FFmpeg开发笔记(七十七)Android的开源音视频剪辑框架RxFFmpeg
android·ffmpeg·音视频·流媒体