本文将介绍如何快速完成
TUIRoomKit
组件的接入,跟随本文档,您将在一小时的时间内完成如下几个关键步骤,并最终得到一个包含完备 UI 界面的音视频会议功能。环境准备
iOS 13.0 及更高。
Xcode 12.0 及更高。
Swift 4.2 及更高。
步骤一:开通服务
步骤二:导入TUIRoomKit组件
1. 在您的
Podfile
文件中添加以下依赖。pod 'TUIRoomKit'
2. 执行以下命令,安装组件。
pod install
说明:
如果无法安装 TUIRoomKit 最新版本,执行以下命令更新本地的 CocoaPods 仓库列表:
pod repo update
步骤三:工程配置
使用音视频功能,需要授权麦克风、摄像头和相册的使用权限。在 App 的 Info.plist 中添加以下几项,分别对应麦克风、摄像头和相册在系统弹出授权对话框时的提示信息。
<key>NSCameraUsageDescription</key><string>TUIRoomKit需要访问您的相机权限</string><key>NSMicrophoneUsageDescription</key><string>TUIRoomKit需要访问您的麦克风权限</string><key>NSPhotoLibraryUsageDescription</key><string>TUIRoomKit需要访问您的相册</string>
![](https://qcloudimg.tencent-cloud.cn/image/document/56eca425d98306903e541989d905cc65.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/56eca425d98306903e541989d905cc65.png)
步骤四:登录
在您的项目中添加如下代码,它的作用是通过调用TUICore 中的相关接口完成TUI组件的初始化。这个步骤非常关键,因为只有在登录成功后才能正常使用 TUIRoomKit 的各项功能,故请您耐心检查相关参数是否配置正确:
import TUICoreTUILogin.login(1400000001, // 请替换为步骤一取到的 SDKAppIDuserID: "998", // 请替换为您的 UserIDuserSig: "xxxxxxxxxx") { // 您可以在控制台中计算一个 UserSig 并填在这个位置print("login success")} fail: { (code, message) inprint("login failed, code: \\(code), error: \\(message ?? "nil")")}
#import "TUICore/TUILogin.h"[TUILogin login:1400000001 // 请替换为步骤一取到的 SDKAppIDuserID:@"998" // 请替换为您的 UserIDuserSig:@"xxxxxxxxxx" succ:^{ // 您可以在控制台中计算一个 UserSig 并填在这个位置NSLog(@"login,success");} fail:^(int code, NSString * _Nullable msg) {NSLog(@"login,failed,code:%d,msg:%@",code,msg);}];
参数说明
这里详细介绍一下 login 函数中所需要用到的几个关键参数:
SDKAppID:在 开通服务 中的第3步中您已经获取到,这里不再赘述。
UserID:当前用户的 ID,字符串类型,只允许包含英文字母(a-z 和 A-Z)、数字(0-9)、连词符(-)和下划线(_)。
UserSig:使用 开通服务 的第3步中获取的 SDKSecretKey 对 SDKAppID、UserID 等信息进行加密,就可以得到 UserSig,它是一个鉴权用的票据,用于腾讯云识别当前用户是否能够使用 TRTC 的服务。您可以通过控制台中的 辅助工具 生成一个临时可用的 UserSig。
步骤五:主持人发起快速会议
会议主界面为ConferenceMainViewController,只需调用 quickStartConference 发起快速会议,并在onConferenceStarted回调中跳转到会议主界面,即可发起快速会议。
import TUIRoomKit// CreateConferenceViewController 为您自己的 ViewControllerclass CreateConferenceViewController: UIViewController {private var conferenceViewController: ConferenceMainViewController?func quickStartConferenceAction() {conferenceViewController = ConferenceMainViewController()let params = ConferenceParams() //params的设置是可选的,包括麦克风和摄像头等状态params.isMuteMicrophone = falseparams.isOpenCamera = falseconferenceViewController?.setConferenceParams(params: params)conferenceViewController?.setConferenceObserver(observer: self)conferenceViewController?.quickStartConference(conferenceId: "123456") //conferenceId为会议号}}extension CreateConferenceViewController: ConferenceObserver {func onConferenceStarted(conferenceId: String, error: ConferenceError) {if error == .success, let vc = conferenceViewController {navigationController?.pushViewController(vc, animated: true)}conferenceViewController = nil}}
// CreateConferenceViewController 为您自己的 ViewController@interface CreateConferenceViewController ()<ConferenceObserver>@property(strong, nonatomic) ConferenceMainViewController * conferenceController;@end@implementation CreateConferenceViewController- (void)quickStartConferenceAction {_conferenceController = [[ConferenceMainViewController alloc]init];ConferenceParams * params = [[ConferenceParams alloc]init]; //params的设置是可选的,包括麦克风和摄像头等状态params.isMuteMicrophone = false;params.isOpenCamera = false;[_conferenceController setConferenceParamsWithParams:params];[_conferenceController setConferenceObserverWithObserver:self];[_conferenceController quickStartConferenceWithConferenceId:@"123456"]; //conferenceId为会议号}- (void)onConferenceStartedWithConferenceId:(NSString *)conferenceId error:(enum ConferenceError)error {if (error == ConferenceErrorSuccess) {[self.navigationController pushViewController:_conferenceController animated:true];}_conferenceController = nil;}@end
步骤六:普通成员加入会议
会议主界面为ConferenceMainViewController,只需调用 joinConference 加入会议,并在onConferenceJoined回调中跳转到会议主界面,即可参与当前会议。
import TUIRoomKit// EnterConferenceViewController 为您自己的 ViewControllerclass EnterConferenceViewController: UIViewController {private var conferenceViewController: ConferenceMainViewController?private func joinConferenceAction() {conferenceViewController = ConferenceMainViewController()let params = ConferenceParams() //params的设置是可选的,包括麦克风和摄像头的状态params.isMuteMicrophone = falseparams.isOpenCamera = falseconferenceViewController?.setConferenceParams(params: params)conferenceViewController?.setConferenceObserver(observer: self)conferenceViewController?.joinConference(conferenceId: "123456") //conferenceId为会议号}}extension EnterConferenceViewController: ConferenceObserver {func onConferenceJoined(conferenceId: String, error: ConferenceError) {if error == .success, let vc = conferenceViewController {navigationController?.pushViewController(vc, animated: true)}conferenceViewController = nil}}
// EnterConferenceViewController 为您自己的 ViewController@interface EnterConferenceViewController ()<ConferenceObserver>@property(strong, nonatomic) ConferenceMainViewController * conferenceController;@end@implementation EnterConferenceViewController- (void)joinConferenceAction {_conferenceController = [[ConferenceMainViewController alloc]init];ConferenceParams * params = [[ConferenceParams alloc]init]; //params的设置是可选的,包括麦克风和摄像头的状态params.isMuteMicrophone = false;params.isOpenCamera = false;[_conferenceController setConferenceParamsWithParams:params];[_conferenceController setConferenceObserverWithObserver:self];[_conferenceController joinConferenceWithConferenceId:@"123456"]; //conferenceId为会议号}- (void) onConferenceJoinedWithConferenceId:(NSString *)conferenceId error:(enum ConferenceError)error {if (error == ConferenceErrorSuccess) {[self.navigationController pushViewController:_conferenceController animated:true];}_conferenceController = nil;}
说明:当使用OC进行接入时,需要在桥接文件中导入TUIRoomKit。
#import <TUIRoomKit/TUIRoomKit-Swift.h>
![]() 成员会议主界面 | ![]() 成员用户列表 |
常见问题
更多特性
设置昵称、头像
预定会议
会中聊天