即时通信 IM 准备工作

这篇指导接入 TUILiveKit UI 组件库,包含视频直播与语聊房的完整 UI 及业务逻辑,需完成环境配置、代码集成与登录。 代码集成:需下载组件、配置 JitPack 仓库、导入并添加依赖、配置混淆规则与 AndroidManifest。 完成登录:调用 LoginStore 登录,需正确设置 SDKAppID、UserID 和 UserSig,并处理被踢下线与签名过期异常。

相关产品
即时通信 IM 产品页,含版本规格、价格与购买入口。

本章节主要指导你完成 TUILiveKit UI 组件库接入的环境配置。

注意:集成方案说明:

注意:这篇档提供的是 UI 组件库接入方案,包含视频直播、语聊房的完整 UI 界面与全套业务逻辑。如果你有极高的 UI 定制需求,需要采用 无 UI(Core SDK) 集成方式,请直接参考 Core SDK 快速开始。

一、功能预览

TUILiveKit UI 组件为你提供的是功能闭环、交互丰富的直播全链路逻辑,集成后可快速实现一套交互完整、业务丰富的直播系统。

二、视频直播

主播准备页 主播开播页 直播列表 观众观看页
   

三、语聊房

主播准备页 主播开播页 直播列表 观众观看页
   

五、开通服务

在使用 TUILiveKit 前,请先参考 开通服务,领取 TUILiveKit 体验版或者开通付费版。

六、环境要求

·Android Studio Arctic Fox (2020.3.1) 及以上版本。

·Gradle 7.0 及以上的版本。

·Android 5.0 及以上的手机设备。

八、步骤 1:下载 TUILiveKit 组件

在 GitHub 中克隆/下载代码,然后将 live 目录和 atomic_x 目录拷贝到你当前 Android 项目的 app 文件夹同级目录中。

十、1. 配置 JitPack 仓库

在工程根目录下的 settings.gradle.kts 或 settings.gradle 文件中,添加 JitPack 仓库地址,项目中播放礼物 SVG 动画的第三方库托管在 JitPack 仓库中,需要从 JitPack 仓库中查找依赖项。

settings.gradle.ktssettings.gradledependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositories { google() mavenCentral() // 添加 JitPack 仓库地址 maven { url = uri("https://jitpack.io") } }}dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositories { google() mavenCentral() // 添加 JitPack 仓库地址 maven { url 'https://jitpack.io' } }}

十一、2. 导入 TUILiveKit 组件

在工程根目录下的 settings.gradle.kts 或 settings.gradle 文件中,增加以下代码以导入 tuilivekit 组件。

settings.gradle.ktssettings.gradleinclude(":tuilivekit")project(":tuilivekit").projectDir = File(settingsDir, "live/tuilivekit")include(":atomic_x")project(":atomic_x").projectDir = File(settingsDir, "atomic_x")include ':tuilivekit'project(':tuilivekit').projectDir = new File(settingsDir, "live/tuilivekit")include(":atomic")project(':atomic').projectDir = new File(settingsDir, "atomic_x")

十二、3. 添加组件依赖

在 app 目录下找到 build.gradle.kts(或 build.gradle)文件,并在文件中增加以下代码,该步骤的作用是声明当前 App 对新加入的 tuilivekit 组件的依赖。

build.gradle.ktsbuild.gradledependencies { // 添加 tuilivekit 依赖 api(project(":tuilivekit"))}dependencies { // 添加 tuilivekit 依赖 api project(':tuilivekit')}

注意:说明:

注意:TUILiveKit 内部已默认依赖 TRTC SDK、IM SDK 等公共库,你无需单独配置。

十三、4. 配置混淆规则

由于 SDK 内部使用了 Java 反射,请在 proguard-rules.pro 文件中添加以下代码,将相关类加入不混淆名单,以确保功能正常运行。

-keep class com.tencent.** { *; }-keep class com.tencent.beacon.** { *; }-keep class com.tencent.cloud.iai.lib.** { *; }-keep class com.tencent.qimei.** { *; }-keep class com.tencent.xmagic.** { *; }-keep class com.trtc.uikit.livekit.component.gift.store.model.** { *; }-keep class com.trtc.uikit.livekit.livestreamcore.** { *; }-keep class com.tcmediax.** { *; }# Google 序列化/反序列化框架 Gson 库相关混淆-keep class com.google.gson.** { *; }# 美颜特效相关混淆-keep class androidx.exifinterface.** { *; }-keep class com.gyailib.** { *; }-keep class org.extra.** { *; }-keep class org.libpag.** { *; }-keep class org.light.** { *; }# 播放礼物 SVG 动画相关混淆-keep class com.opensource.svgaplayer.proto.** { *; }-keep class com.squareup.wire.** { *; }

十四、5. 修改 AndroidManifest.xml

为了防止编译时 AndroidManifest 合并过程中产生属性冲突,你需要在 app/src/main/AndroidManifest.xml 文件的 <application> 节点中,添加 tools:replace="android:allowBackup" 和 android:allowBackup="false",用以覆盖组件内的设置。

<application … // 添加如下配置覆盖 依赖的 sdk 中的配置 android:allowBackup="false" tools:replace="android:allowBackup">

十五、6. 完成项目同步

在你完成上述步骤后,通常情况下 Android Studio 会自动为你弹出 Sync Now 按钮,你需要点击该同步按钮完成项目的同步,若 IDE 没有自动弹出同步按钮,请你手动点击工具栏中的同步按钮进行项目的同步,同步后 IDE 会完成项目的构建配置和索引等工作,你就可以在你的项目中正常使用 TUILiveKit 组件了。

十六、完成登录

代码集成完成后,你需要完成登录。这是使用 TUILiveKit 的关键步骤,因为只有在登录成功后才能正常使用 TUILiveKit 的各项功能,故请你耐心检查相关参数是否配置正确:

注意:说明:

注意:在示例代码中,直接进行了登录接口的调用。但在实际项目场景下,强烈推荐你在完成自己的用户身份验证等相关登录操作后,再调用 TUILiveKit 的登录服务。这样可以避免因过早调用登录服务,导致业务逻辑混乱或数据不一致的问题,同时也能更好地适配你项目中现有的用户管理和权限控制体系。

Kotlin// 1.导入依赖import io.trtc.tuikit.atomicxcore.api.CompletionHandlerimport io.trtc.tuikit.atomicxcore.api.login.LoginStoreprivate const val TAG = "LoginStore"// 2.调用登录接口,推荐你在自己登录业务完成后再调用 LoginStore 登录LoginStore.shared.login(applicationContext, 1400000001, // 请替换为开通服务控制台的 SDKAppID "denny", // 请替换为你的 UserID "xxxxxxxxxxx", // 你可以在控制台中计算一个 UserSig 并填在这个位置 object : CompletionHandler { override fun onSuccess() { Log.i(TAG, "LoginStore login success") } override fun onFailure(code: Int, desc: String) { Log.e(TAG, "LoginStore login failed, $code errorMessage:$desc") } })

登录接口参数说明

参数 类型 说明
SDKAppID Int 从 TRTC 控制台 > 应用管理 获取。
UserID String 当前用户的唯一 ID,仅包含英文字母、数字、连字符和下划线。
userSig String 用于腾讯云鉴权的票据。请注意:开发环境:你可以采用本地 GenerateTestUserSig.genTestSig 函数生成 UserSig 或者通过 UserSig 辅助工具 生成临时的 UserSig。生产环境:为了防止密钥泄露,请务必采用服务端生成 UserSig 的方式。详细信息请参见 服务端生成 UserSig。更多信息请参见 如何计算及使用 UserSig。

十七、登录异常状态处理【可选】

LoginStore 提供了登录状态回调机制,方便你处理可能出现的登录异常情况,主要包括 “被踢下线” 和 “签名过期” 这两种异常状态的回调:

·被踢下线:用户在线情况下被踢,SDK 会通过 onKickedOffline 回调通知给你,此时可以在 UI 提示用户,并调用 LoginStore.shared.login 重新登录。

·签名过期:用户在线期间收到 onUserSigExpired 回调,说明你之前给该用户签发的 userSig 已经过期了,这个时候如果当前用户在你后台的登录态依然有效,你可以让你的 app 向你的后台请求新的 userSig,并调用 LoginStore.shared.login 续签登录态。

kotlinimport io.trtc.tuikit.atomicxcore.api.login.LoginListenerimport io.trtc.tuikit.atomicxcore.api.login.LoginStoreclass YourLoginService { // 实例化监听器 private val loginListener = object : LoginListener() { // 用户被踢下线回调 override fun onKickedOffline() { // 你的业务代码:UI 交互提示用户,然后重新登录 } // 用户签名过期回调 override fun onLoginExpired() { // 你的业务代码:如果当前用户在你后台的登录态依然有效,你可以让你的 app 向你的后台请求新的 userSig, // 并调用 LoginStore.shared.login 续签登录态。 } } // 监听登录状态回调 fun subscribeLoginStatus() { LoginStore.shared.addLoginListener(loginListener) } // 取消监听登录状态回调 fun unsubscribeLoginStatus() { LoginStore.shared.removeLoginListener(loginListener) }}

十八、下一步

恭喜你,现在你已经成功集成了直播组件并完成了登录。接下来,你可以根据你的业务场景实现主播开播、观众观看、直播列表等功能。

业务场景 描述 集成指引
视频直播 包含主播开播、观众观看、连麦互动、美颜设置、礼物弹幕等全套功能。 主播开播观众观看
语聊房 包含麦位管理、背景音乐、礼物互动、语聊控场等完整业务逻辑。 主播开播观众观看
直播列表 展示直播间/语聊房列表,支持封面、人数、房间标题等信息展示。 直播列表

20、每次进房都需要调用登录吗?

不需要。通常你只需要完成一次 TUILogin.login 调用即可,我们建议你将 TUILogin.login 和 TUILogin.logout 与自己的登录业务关联。

21、集成代码后产生如下所示编译报错 allowBackup 异常,如何处理?

·问题原因:多个模块的 AndroidManifest.xml 中都配置了 allowBackup 属性,造成冲突。

·解决方法:你可以在你工程的 AndroidManifest.xml 文件中删除 allowBackup 属性或将该属性改为 false,表示关闭备份和恢复功能;并在 AndroidManifest.xml 文件的 application 节点中添加 tools:replace="android:allowBackup" 表示覆盖其他模块的设置,使用你自己的设置。修复示例如下:

22、集成代码后还需要添加摄像头麦克风等权限的声明吗?

不需要,TUILiveKit 中已经内置了摄像头麦克风等权限的声明,在接入过程中你无需再关心这些权限的声明。

赞 (0)
上一篇 4天前
下一篇 4天前