本文档旨在指导 iOS 开发者快速将互动课堂(LCIC)SDK 集成至现有项目中。
说明:
开发环境准备
在开始集成前,请确保您的开发环境满足以下要求:
开发工具:Xcode 14 或更高版本。
系统要求:iOS 11.0 或更高版本。
集成步骤
步骤 1:导入 SDK
LCIC SDK 已发布至 CocoaPods。请在项目的
Podfile 中添加以下依赖,并执行 pod install 进行安装。pod 'TCICSDK_Pro', '1.8.5.18'pod 'TXLiteAVSDK_Professional', '12.7.19324'
步骤 2:配置 App 权限
LCIC SDK 需要使用相机、麦克风及相册权限。请在主 App 的
Info.plist 文件中添加以下键值对,并填入相应的权限申请描述:<key>NSCameraUsageDescription</key><string>需要访问您的相机以进行视频互动</string><key>NSMicrophoneUsageDescription</key><string>需要访问您的麦克风以进行语音互动</string><key>NSPhotoLibraryAddUsageDescription</key><string>需要访问相册以保存图片</string><key>NSPhotoLibraryUsageDescription</key><string>需要访问相册以读取图片</string>
步骤 3:全局环境配置
在启动课堂前,建议进行全局环境参数配置(如域名、语言等)。
// 1. 设置课堂域名// 默认域名为:class.qcloudclass.com// targetDomain 必须为腾讯提供的专用域名[TCICClassController setDomain:targetDomain];// 2. 设置 H5 端版本号// 默认为:"latest"。一般情况下无需调整[TCICClassController setH5Version:targetVersion];// 3. 设置课堂语言类型// 默认为中文: "zh"。具体参数值请参考下文参数表[TCICClassController setClassLanuage:[msgDic objectForKey:@"lng"]];// 4. 预加载资源// 注意:预加载逻辑需放在最后调用,前面的配置变更会清除预加载内容[TCICClassController preloadClass];
步骤 4:准备课堂参数
进入课堂需要构建
TCICClassConfig 对象。请通过以下方式获取所需参数:参数详情表
字段 | 类型 | 必填 | 含义 | 备注 |
schoolid | int | 是 | 应用 ID | |
userid | long | 是 | 课堂 ID | |
token | string | 是 | 用户 ID | |
classid | string | 是 | 鉴权 Token | |
scene | string | 否 | 场景名称 | 用于区分不同的定制布局,有两种配置方式: |
lng | string | 否 | 语言参数 | 界面语言设置。支持值: zh-CN:中文简体zh-TW:中文繁体en-US:英语ja:日语ko:韩语ar:阿拉伯语vi:越南语id:印尼语需配合 TCICWebViewManager.getInstance().setClassLanguage 使用。 |
camera | int | 否 | 开启摄像头 | 1:开启 (默认),0:关闭。 |
mic | int | 否 | 开启麦克风 | 1:开启 (默认),0:关闭。 |
speaker | int | 否 | 开启扬声器 | 1:开启 (默认),0:关闭。 |
groupLiveCode | string | 否 | 分组直播码 |
步骤 5:调起课堂页面
构建
TCICClassConfig 对象并传入必要参数,即可调起 LCIC 组件主页面。打开课堂代码示例:
TCICClassConfig *roomConfig = [[TCICClassConfig alloc] init];// 必填参数roomConfig.schoolId = 123456; // 学校/应用 IDroomConfig.userId = "test_user"; // 用户 IDroomConfig.token = "test_token"; // 鉴权 TokenroomConfig.classId = 654321; // 课堂 ID// 可选参数配置[roomConfig setValue:@"en" forKey:@"language"]; // 设置语言[roomConfig setValue:@"scene_name" forKey:@"scene"]; // 设置场景[roomConfig setValue:@(0) forKey:@"preferPortrait"]; // 屏幕方向:0 横屏(默认),1 竖屏// 初始化并跳转控制器TCICClassController *vc = [TCICClassController classRoomWithConfig:roomConfig];if (vc) {[(UINavigationController *)self.window.rootViewController pushViewController:vc animated:YES];} else {NSLog(@"错误:参数配置有误,无法初始化课堂控制器");}
监听退出通知:
如果您需要监听用户退出课堂的事件,请注册
TCICExitClassRoomCompleteNotify 通知:[[NSNotificationCenter defaultCenter] addObserver:selfselector:@selector(handleClassExit)name:@"TCICExitClassRoomCompleteNotify"object:nil];
步骤 6:SDK 授权申请
参考模板提供信息: 问题:实时互动-教育版申请播放器授权 公司名称: 联系方式: App Name: Package Name (Android): Bundle ID (iOS): |
注意:
一个旗舰版仅支持授权一个正式包名,请确认信息无误。
高级功能:移动端屏幕分享
LCIC SDK 支持 iOS 系统级屏幕分享功能。实现该功能需要利用 iOS 的 ReplayKit 框架及 App Group 能力。
1. 创建 App Group
2. 创建 Broadcast Upload Extension
请参考 TRTC 官网文档 > 步骤 2:创建 Broadcast Upload Extension 在工程中创建一个新的 Target(类型为 Broadcast Upload Extension)。
3. 配置 Extension 依赖
在
Podfile 中为新创建的 Extension Target 添加依赖,并重新执行 pod install。target 'YourExtensionTargetName' do# 如果不使用动态库,请注释下一行# use_frameworks!pod 'TCICSDK_Pro_ReplayKit'end
4. 实现 SampleHandler
在 Extension 的
SampleHandler.m 文件中,导入头文件并实现以下逻辑。注意:
#import "SampleHandler.h"#import <TXLiteAVSDK_ReplayKitExt/TXLiteAVSDK_ReplayKitExt.h>#import <TCICScreenKit/TCICScreenKit.h>// TODO: 替换为您创建的 App Group Identifier#define APPGROUP "group.com.yourcompany.app"@interface SampleHandler() <TXReplayKitExtDelegate>@end@implementation SampleHandler- (void)broadcastStartedWithSetupInfo:(NSDictionary<NSString *,NSObject *> *)setupInfo {// 初始化 ReplayKitExt[[TXReplayKitExt sharedInstance] setupWithAppGroup:APPGROUP delegate:self];// 通知 LCIC ScreenKit 开始[[TCICScreenKit sharedScreenKit] onScreenKitStarted];}- (void)broadcastPaused {[[TCICScreenKit sharedScreenKit] onScreenKitPaused];}- (void)broadcastResumed {[[TCICScreenKit sharedScreenKit] onScreenKitResumed];}- (void)broadcastFinished {[[TXReplayKitExt sharedInstance] finishBroadcast];[[TCICScreenKit sharedScreenKit] onScreenKitFinished];}#pragma mark - TXReplayKitExtDelegate- (void)broadcastFinished:(TXReplayKitExt *)broadcast reason:(TXReplayKitExtReason)reason {NSString *tip = @"";switch (reason) {case TXReplayKitExtReasonRequestedByMain:tip = @"屏幕共享已结束";break;case TXReplayKitExtReasonDisconnected:tip = @"应用断开";break;case TXReplayKitExtReasonVersionMismatch:tip = @"集成错误(SDK 版本号不匹配)";break;}NSError *error = [NSError errorWithDomain:NSStringFromClass(self.class) code:0 userInfo:@{NSLocalizedFailureReasonErrorKey:tip}];[self finishBroadcastWithError:error];}- (void)processSampleBuffer:(CMSampleBufferRef)sampleBuffer withType:(RPSampleBufferType)sampleBufferType {// 假设 kSupportSceenShare 是您控制是否开启的宏或变量,如不需要可移除判断if (kSupportSceenShare) {switch (sampleBufferType) {case RPSampleBufferTypeVideo:case RPSampleBufferTypeAudioApp:// 分发数据给 LCIC ScreenKit[[TCICScreenKit sharedScreenKit] processSampleBuffer:sampleBuffer withType:sampleBufferType];// 分发数据给 TXLiteAVSDK[[TXReplayKitExt sharedInstance] sendSampleBuffer:sampleBuffer withType:sampleBufferType];break;case RPSampleBufferTypeAudioMic:// 麦克风音频通常由主 App 采集,此处一般忽略break;default:break;}}}@end
5. 主 App 对接配置
在主 App 初始化课堂配置时,必须设置
appGroup 参数,以便主 App 能与 Extension 通信。TCICClassConfig *roomConfig = [[TCICClassConfig alloc] init];roomConfig.userId = "test";roomConfig.token = "test_token";roomConfig.classId = 123454;roomConfig.schoolId = 123456; // 同 SDKAppId// 【关键步骤】通过 KVC 设置 AppGroup[roomConfig setValue:@"group.com.yourcompany.app" forKey:@"appGroup"];
6. 注意事项
1. 触发方式:
iOS 12及以上:TCICSDK 已内置屏幕分享触发按钮(需不依赖 Scene 生命周期)。具体可参见 TRTC 官网文档 > 步骤 4:增加屏幕分享的触发按钮(可选),但该功能有限制条件。
以 Demo 为例,弹出效果如下,单击开始直播即可。

iOS 11:需引导用户在控制中心长按录屏按钮,选择您的 Extension 应用(如“腾讯会议”示例图所示)来启动。

2. 版本兼容:Extension 的
Deployment Target 建议设置为 iOS 11.0。3. 后台模式:主 App 必须开启 Background Modes 中的 “Audio, AirPlay, and Picture in Picture” 选项,以保证后台保活。

附录与参考
异常监控:建议接入 腾讯 Bugly 以监控应用稳定性。
示例代码:下载 iOS 开发 Demo 参考完整实现。
进阶配置:更多自定义页面配置请参考 Web 内核定制指南。