本章节主要指导你完成 TUILiveKit UI 组件库接入的环境配置。
注意:集成方案说明:
注意:这篇档提供的是 UI 组件库接入方案,包含视频直播、语聊房的完整 UI 界面与全套业务逻辑。如果你有极高的 UI 定制需求,需要采用 无 UI(Core SDK) 集成方式,请直接参考 Core SDK 快速开始。
一、功能预览
TUILiveKit 是一个功能全面的直播组件,集成后可快速实现以下场景功能。
二、视频直播
| 主播准备页 | 主播开播页 | 直播列表 | 观众观看页 |
| | | | |
三、语聊房
| 主播准备页 | 主播开播页 | 直播列表 | 观众观看页 |
| | | | |
四、开通服务
在使用 TUILiveKit 前,请先参考 开通服务,领取 TUILiveKit 体验版或者开通付费版。
五、环境要求
·Xcode:需使用 Xcode 15 或更高版本。
·iOS 系统:支持 iOS 14.0 或更高版本的设备。
·CocoaPods 环境:已安装 CocoaPods 环境。如果你尚未安装,请参见 CocoaPods 页面安装,或按以下步骤操作:
·使用 gem 安装 CocoaPods:在终端中执行 sudo gem install cocoapods 命令进行安装。
注意:提示:
注意:sudo gem install cocoapods 安装过程中可能需要输入电脑密码,按提示输入管理员密码即可。
六、步骤 1:通过 CocoaPods 导入组件
1. 添加 Pod 依赖:
·若项目已有 Podfile 文件。
在你项目的 Podfile 文件中添加 pod 'TUILiveKit' 依赖。例如:
target 'YourProjectTarget' do # 其他已有的 Pod 依赖… # 添加 pod 'TUILiveKit' 依赖 pod 'TUILiveKit' end
·若项目没有 Podfile 文件。
在终端中通过 cd 命令切换到你的 .xcodeproj 目录下,然后执行 pod init 命令创建 Podfile 文件,创建完成后,在你的 Podfile 文件中添加 pod 'TUILiveKit' 依赖。例如:
// 如果你的项目目录是 /Users/yourusername/Projects/YourProject// 1. cd 到你的.xcodeproj 工程目录下cd /Users/yourusername/Projects/YourProject// 2. 执行 pod init,此命令运行完后,会在你的工程目录下生成一个 Podfile 文件。pod init// 3. 在生成的 Podfile 文件中添加 pod 'TUILiveKit' 依赖 target 'YourProjectTarget' do # 添加 pod 'TUILiveKit' 依赖 pod 'TUILiveKit' end
2. 安装组件:
在终端中 cd 到 Podfile 文件所在的目录,然后执行以下命令安装组件。
pod install
七、步骤 2:工程配置
为了使用音视频功能,你的应用需要获取麦克风和摄像头的权限。请在应用的 Info.plist 文件中添加以下两项,并填写对应的使用说明,这些说明将在系统请求权限时向用户显示:
<key>NSCameraUsageDescription</key><string>TUILiveKit需要访问你的相机权限,开启后录制的视频才会有画面</string><key>NSMicrophoneUsageDescription</key><string>TUILiveKit需要访问你的麦克风权限,开启后录制的视频才会有声音</string>
八、完成登录
代码集成完成后,你需要完成登录,这是使用 TUILiveKit 的关键步骤,因为只有在登录成功后才能正常使用 TUILiveKit 的各项功能,故请你耐心检查相关参数是否配置正确:
注意:说明:
注意:在示例代码中,登录操作是在 didFinishLaunchingWithOptions 方法内完成的。但在实际项目场景下,强烈推荐 你在完成自己的用户身份验证等相关登录操作后,再调用 TUILiveKit 的登录服务。这样可以避免因过早调用登录服务,导致业务逻辑混乱或数据不一致的问题,同时也能更好地适配你项目中现有的用户管理和权限控制体系。
Swift//// AppDelegate.swift//// 1. 导入 AtomicXCoreimport AtomicXCore// 2. 示例代码在 didFinishLaunchingWithOptions 完成登录,推荐你在自己登录业务完成后再调用登录服务 func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { // 3. 调用登录接口 LoginStore.shared.login(sdkAppID: 1400000001, // 请替换为开通服务控制台的 SDKAppID userID: "denny", // 请替换为你的 UserID userSig: "xxxxxxxxxxx") { [weak self] result in // 你可以在控制台中计算一个 UserSig 并填在这个位置 guard let self = self else { return } switch result { case .success(): print("login success") case .failure(let err): print("login failed. code: \\(err.code), error:\\(err.message)") } } return true}
登录接口参数说明
| 参数 | 类型 | 说明 |
| 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 续签登录态。
// YourLoginService 代表你负责登录的业务模块class YourLoginService: NSObject { private var cancelableSet: Set<AnyCancellable> = [] // 监听登录状态回调 func subscribeLoginStatus() { LoginStore.shared.loginEventPublisher .receive(on: RunLoop.main) .sink { [weak self] loginEvent in guard let self = self else { return } switch loginEvent { case .kickedOffline: // 用户被踢下线回调 // 你的业务代码:UI 交互提示用户,然后重新登录 break case .loginExpired: // 用户签名过期回调 // 你的业务代码:如果当前用户在你后台的登录态依然有效, // 你可以让你的 app 向你的后台请求新的 userSig, // 并调用 LoginStore.shared.login 续签登录态。 break default: break } } .store(in: &self.cancelableSet) }}
十、下一步
恭喜你,现在你已经成功集成了直播组件并完成了登录。接下来,你可以根据你的业务场景实现主播开播、观众观看、直播列表等功能。
| 业务场景 | 描述 | 集成指引 |
| 视频直播 | 包含主播开播、观众观看、连麦互动、美颜设置、礼物弹幕等全套功能。 | 主播开播观众观看 |
| 语聊房 | 包含麦位管理、背景音乐、礼物互动、语聊控场等完整业务逻辑。 | 主播开播观众观看 |
| 直播列表 | 展示直播间/语聊房列表,支持封面、人数、房间标题等信息展示。 | 直播列表 |
十一、pod install 执行后本地安装找不到 TUILiveKit 最新版本?
如果无法安装 TUILiveKit 最新版本,请按以下步骤操作:
1. 在 Podfile 所在目录下删除 Podfile.lock 和 Pods,你可以选择手动删除或终端执行以下命令
// cd 到 Podfile 所在目录下rm -rf Pods/rm Podfile.lock
2. 在 Podfile 所在目录下执行 pod install –repo-update
// cd 到 Podfile 所在目录下pod install –repo-update
十二、每次进房都需要调用登录吗?
不需要。通常你只需要完成一次 LoginStore.shared.login 调用即可,我们建议你将 LoginStore.shared.login 和 LoginStore.shared.logout 与自己的登录业务关联。
十三、Podfile 文件有没有示例配置可以参考?
你可以参考 GitHub TUILiveKit Example 工程 Podfile 示例文件。