{"id":18438196,"url":"https://github.com/easemob/uikit_chatroom_android","last_synced_at":"2025-04-15T03:10:49.635Z","repository":{"id":211094601,"uuid":"727530904","full_name":"easemob/UIKit_Chatroom_android","owner":"easemob","description":null,"archived":false,"fork":false,"pushed_at":"2024-12-10T07:23:44.000Z","size":36255,"stargazers_count":2,"open_issues_count":1,"forks_count":3,"subscribers_count":8,"default_branch":"main","last_synced_at":"2025-03-28T14:51:10.750Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/easemob.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-12-05T03:37:10.000Z","updated_at":"2024-12-10T07:23:48.000Z","dependencies_parsed_at":"2024-12-10T08:29:03.606Z","dependency_job_id":null,"html_url":"https://github.com/easemob/UIKit_Chatroom_android","commit_stats":null,"previous_names":["easemob/uikit_chatroom_android"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/easemob%2FUIKit_Chatroom_android","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/easemob%2FUIKit_Chatroom_android/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/easemob%2FUIKit_Chatroom_android/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/easemob%2FUIKit_Chatroom_android/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/easemob","download_url":"https://codeload.github.com/easemob/UIKit_Chatroom_android/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248997079,"owners_count":21195799,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-06T06:19:00.550Z","updated_at":"2025-04-15T03:10:49.619Z","avatar_url":"https://github.com/easemob.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ChatroomUIKit\n\n*English | [英文](ChatroomUIKit.md)*\n\n# [Demo](../app)\n\n在该项目中，我们在 `Example` 文件夹中提供了最佳实践示范项目，帮助你构建业务能力。\n\n你可以扫描以下二维码体验 demo：\n\n[![SampleDemo](image/demo.png)](image/demo.png).\n\n# [ChatroomUIKit 集成指南](document/ChatroomUIKit_zh.md#chatroomuikit-集成指南)\n\n## [概述](document/ChatroomUIKit_zh.md#概述)\n\n本指南介绍了 ChatroomUIKit 框架在 Android 开发中的概述和使用示例，描述了该 UIKit 的各个组件和功能，使开发人员能够很好地了解 UIKit 并有效地使用。\n\n## [目录](document/ChatroomUIKit_zh.md#目录)\n\n- [前提条件](document/ChatroomUIKit_zh.md#前提条件)\n- [安装](document/ChatroomUIKit_zh.md#安装)\n- [架构](document/ChatroomUIKit_zh.md#架构)\n- [快速开始](document/ChatroomUIKit_zh.md#快速开始)\n- [进阶用法](document/ChatroomUIKit_zh.md#进阶用法)\n- [自定义](document/ChatroomUIKit_zh.md#自定义)\n- [业务流程](document/ChatroomUIKit_zh.md#业务流程)\n- [API 时序图](document/ChatroomUIKit_zh.md#api-时序图)\n- [设计指南](document/ChatroomUIKit_zh.md#设计指南)\n- [贡献](document/ChatroomUIKit_zh.md#贡献)\n- [许可证](document/ChatroomUIKit_zh.md#许可证)\n\n# [前提条件](document/ChatroomUIKit_zh.md#前提条件)\n\n- Jetpack Compose 需使用 Android API 级别 21（Android 5.0）及以上\n- Android Studio Arctic Fox 2020.3.1 及以上\n- 使用 kotlin 语言\n- JDK 1.8 及以上\n- Gradle 7.0.0 及以上\n\n# [安装](document/ChatroomUIKit_zh.md#安装)\n\n你可以通过 build.gradle 导入 ChatroomUIKi 库，作为 app 项目的依赖。\n\n## [本地模块依赖](document/ChatroomUIKit_zh.md#本地模块依赖)\n\n找到 **ChatroomUIKit** 模块，将 [ChatroomUIKit](../ChatroomUIKit)  模块导入到项目中。\n\n1. 在 Android Studio 中打开你的项目。\n\n2. 选择 **File** \u003e **import Module**.\n\n3. 查找并选择 **ChatroomUIKit**。\n\n```\n// settings.gradle\ninclude ':ChatroomUIKit'\nproject(':ChatroomUIKit').projectDir = new File('../ChatroomUIKit/ChatroomUIKit')\n\n// app/build.gradle\ndependencies {\n  implementation(project(mapOf(\"path\" to \":ChatroomUIKit\")))\n}\n```\n\n## [远程模块依赖](document/ChatroomUIKit_zh.md#远程模块依赖)\n\n将以下代码添加到 build.gradle 中：（[点击这里查询最新版本](https://central.sonatype.com/artifact/io.hyphenate/ease-chatroomui-kit/versions)）\n\n```\n//以1.1.0版本为例\nimplementation (\"io.hyphenate:ease-chatroomui-kit:1.1.0\")\n```\n\n# [架构](document/ChatroomUIKit_zh.md#架构)\n\n### [ChatroomUIKit 基本组件](document/ChatroomUIKit_zh.md#chatroomuikit-基本组件)\n\n```\n┌─ Example                               // Demo 目录。\n│  ├─ ChatroomListActivity               // 主要提供聊天室列表 Activity。\n│  ├─ ChatroomActivity                   // 显示 ChatroomUIKit 聊天室 Activity。\n│  ├─ compose                            // Demo。\n│  ├─ http                               // 封装的网络请求，用于与 app 服务进行交互。\n│  └─ SplashActivity                     // 程序启动页面。\n│\n└─ ChatroomUIKit            \n       ├─ compose                        // UI Compose （聊天室底部工具栏区域、消息列表、礼物列表和底部抽屉）\n       ├─ theme                          // 资源文件，提供项目所需的各种属性，例如颜色、字体、主题、渐变和大小。\n       ├─ viewModel                      // 数据处理。\n       ├─ widget                         // 输入组件。\n       ├─ ui                             // 搜索 Activity。\n       └─ service                        // ChatroomUIKit 协议模块。\n          ├─ model                       // ChatroomUIKit 使用的实体对象（用户、聊天室信息和配置信息）。\n          ├─ service                     // ChatroomUIKit 使用的协议和协议实现（聊天室协议、用户协议和礼物协议）。\n          │   ├─ ChatroomService         // 协议接口              \n          │   └─ Protocol                        \n          │       ├─ GiftService          // 礼物发送和接收频道。\n          │       ├─ UserService          // 用于用户登录和用户属性更新的组件。\n          │       └─ ChatroomService      // 用于实现聊天室管理协议的组件，包括加入和离开聊天室和发送和接收消息。\n          └─ ChatroomUIKitClient          // ChatroomUIKit 初始化类。\n\n```\n# [快速开始](document/ChatroomUIKit_zh.md#快速开始)\n\n本节介绍 ChatroomUIKit 各种组件的使用示例。`Examples` 文件夹中介绍了详细的代码和各种用例的项目。\n\n按以下步骤在 Android Studio 中运行 Android 平台应用：\n1. 下载 Demo，保存到本地文件。\n2. 找到根目录下的 `local.properties` 文件夹，配置 `CHATROOM_APP_KEY` 和 `REQUEST_HOST`。\n3. 运行 Demo。\n\n### [步骤 1 初始化 ChatroomUIKit](document/ChatroomUIKit_zh.md#步骤-1-初始化-chatroomuikit)\n\n```kotlin\nclass ChatroomApplication : Application() {\n    override fun onCreate() {\n\n        val chatroomUIKitOptions = ChatroomUIKitOptions(\n            uiOptions = UiOptions(\n                targetLanguageList = listOf(GlobalConfig.targetLanguage.code),\n                useGiftsInList = false,\n            )\n        )\n\n        ChatroomUIKitClient.getInstance().setUp(\n            applicationContext = this,\n            options = chatroomUIKitOptions,\n            appKey = BuildConfig.CHATROOM_APP_KEY\n        )\n    }\n}\n```\n\n### [步骤 2 登录 ChatroomUIKit](document/ChatroomUIKit_zh.md#步骤-2-登录-chatroomuikit)\n\n```kotlin\n// 利用符合 `UserInfoProtocol` 协议的当前用户对象中的用户信息，登录 ChatroomUIKit。\n// 关于如何在环信控制台上生成用户，详见 https://docs-im-beta.easemob.com/document/server-side/enable_and_configure_IM.html#创建-im-用户。\n// 从你的 app server 中获取 token，也可以在环信控制台的应用概述 \u003e 用户认证页面获取临时 token 登录。\nChatroomUIKitClient.getInstance().login(\"user id\",\"token\")\n```\n\n### [步骤 3 创建聊天室](document/ChatroomUIKit_zh.md#步骤-3-创建聊天室)\n\n```kotlin\n// 1. 获取聊天室列表，加入聊天室。或者，在环信控制台创建聊天室。详见 https://docs-im-beta.easemob.com/document/server-side/enable_and_configure_IM.html#创建聊天室。\n// 2. 加载完整封装的聊天室场景组件 ComposeChatroom。\n// 3. 设置 ComposeChatroom 所需的参数。\n// 4. 在环信控制台上，将用户添加到聊天室中。详见 https://docs-im-beta.easemob.com/document/server-side/enable_and_configure_IM.html#创建聊天室。\n// 5. 加载 ComposeChatroom 视图，传入聊天室的 roomId 和聊天室所有者的 UserEntity 对象。\nclass ChatroomActivity : ComponentActivity(){\n    override fun onCreate(savedInstanceState: Bundle?) {\n        super.onCreate(savedInstanceState)\n        setContent {\n            ComposeChatroom(roomId = roomId,roomOwner = ownerInfo)\n        }\n    }\n}\n```\n\n[![CreateChatroom](image/CreateChatroom.png)](image/CreateChatroom.png).\n\n# [进阶用法](document/ChatroomUIKit_zh.md#进阶用法)\n\n本节介绍三个进阶用法。\n\n### [1.初始化聊天室 compose](document/ChatroomUIKit_zh.md#1初始化聊天室-compose)\n\n```kotlin\n    val chatroomUIKitOptions = ChatroomUIKitOptions(\n    chatOptions = ChatSDKOptions(),\n    uiOptions = UiOptions(\n        targetLanguageList = listOf(GlobalConfig.targetLanguage.code),\n        useGiftsInList = false,\n    )\n)\n\nChatroomUIKitClient.getInstance().setUp(applicationContext = applicationContext,appKey = \"Your AppKey\",options = chatroomUIKitOptions)\n```\n\n### [2.登录 ChatroomUIKit](document/ChatroomUIKit_zh.md#2登录-chatroomuikit)\n\n```kotlin\nclass YourAppUser: UserInfoProtocol {\n    var userId: String = \"your application user id\"\n\n    var nickName: String = \"you user nick name\"\n\n    var avatarURL: String = \"you user avatar url\"\n\n    var gender: Int = 1\n\n    var identity: String =  \"you user level symbol url\"\n\n}\n// 利用符合 `UserInfoProtocol` 协议的当前用户对象中的用户信息，登录 ChatroomUIKit。\n// 从你的 app server 中获取 token，也可以在环信控制台的应用概述 \u003e 用户认证页面获取临时 token 登录。\nChatroomUIKitClient.getInstance().login(YourAppUser, token, onSuccess = {}, onError = {code,error -\u003e})\n```\n\n### [3.监听 ChatroomUIKit 事件和错误](document/ChatroomUIKit_zh.md#3监听-chatroomuikit-事件和错误)\n\n你可以调用 `registerRoomResultListener` 方法监听 ChatroomUIKit 事件和错误。\n\n```kotlin\nChatroomUIKitClient.getInstance().registerRoomResultListener(this)\n```\n\n# [自定义](document/ChatroomUIKit_zh.md#自定义)\n\n### [修改可配置项](document/ChatroomUIKit_zh.md#修改可配置项)\n\n```kotlin\n// 修改 UiOptions 中的可配项。例如，你可以修改 UiOptions 中的 useGiftsInList 配置消息列表上是否显示礼物。\nval chatroomUIKitOptions = ChatroomUIKitOptions(\n      uiOptions = UiOptions(\n      targetLanguageList = listOf(GlobalConfig.targetLanguage.code),\n      useGiftsInList = false,\n    )\n)\n\n// 修改 ViewModel 中的可配项。例如，你可以修改 MessageListViewModel 中的可配项，配置是否显示时间和头像。\nclass MessageListViewModel(\n  private val isDarkTheme: Boolean? = false,\n  private val showDateSeparators: Boolean = true,\n  private val showLabel: Boolean = true,\n  private val showAvatar: Boolean = true,\n  private val roomId: String,\n  private val chatService: UIChatroomService,\n  private val composeChatListController: ComposeChatListController\n)\n```\n\n### [自定义主题](document/ChatroomUIKit_zh.md#自定义主题)\n\n你可以通过更新主题相关的配置项来自定义主题。若对任何配置项不做修改，可以使用默认主题。\n\n```kotlin\n@Composable\nfun ChatroomUIKitTheme(\n    isDarkTheme: Boolean = isSystemInDarkTheme(),\n    colors: UIColors = if (!isDarkTheme) UIColors.defaultColors() else UIColors.defaultDarkColors(),\n    shapes: UIShapes = UIShapes.defaultShapes(),\n    dimens: UIDimens = UIDimens.defaultDimens(),\n    typography: UITypography = UITypography.defaultTypography(),\n    content: @Composable () -\u003e Unit\n)\n```\n\n# [业务流程](document/ChatroomUIKit_zh.md#业务流程)\n\n下图为整个业务请求和回调逻辑。\n\n![Overall flow diagram of business logic](image/BusinessFlowchartA.png)\n\n# [API 时序图](document/ChatroomUIKit_zh.md#api-时序图)\n\n下图为 `Example` 项目中的最佳实践 API 调用时序图。\n\n![APIUML](image/Api.png)\n\n# [设计指南](document/ChatroomUIKit_zh.md#设计指南)\n\n关于设计指南和细节中的任何问题，可以在 Figma 设计稿中添加标注，然后 @ 我们的设计师 Stevie Jiang。\n\n- [UI 设计稿](https://www.figma.com/file/OX2dUdilAKHahAh9VwX8aI/Streamuikit?node-id=137%3A38589\u0026mode=dev).\n\n- [UI 设计指南](https://www.figma.com/file/OX2dUdilAKHahAh9VwX8aI/Streamuikit?node-id=137)\n\n# [贡献](https://github.com/easemob/UIKit_Chatroom_android#贡献)\n\n我们随时欢迎各种形式的贡献和建议。如有任何问题或改进意见，你可以创建问题或提交 PR。\n\n## [作者](document/ChatroomUIKit_zh.md#作者)\n\napex-wang, [1746807718@qq.com](mailto:1746807718@qq.com)\n\n## [许可证](document/ChatroomUIKit_zh.md#许可证)\n\nChatroomUIKit 采用 MIT 许可证。如欲了解更多信息，请参阅许可证文件。\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feasemob%2Fuikit_chatroom_android","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feasemob%2Fuikit_chatroom_android","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feasemob%2Fuikit_chatroom_android/lists"}