tencent cloud

文档反馈

最后更新时间:2024-12-04 15:50:26

    开发环境要求

    Xcode 14

    前提条件

    您已注册腾讯云 账号,并完成 实名认证

    步骤一:创建新的应用

    1. 登录 实时互动-教育版 控制台,左侧导航栏选择快速跑通应用
    2. 默认进入“创建应用”界面,应用类型可选择“创建新应用”,输入应用名称,例如 TestLCIC。
    若您已创建应用,应用类型项可单击“选择已有应用”。
    说明:
    移动端需要购买旗舰版或企业尊享版后,方可接入移动端。若需创建商用应用,可根据业务需求在购买页 创建对应版本的应用。
    3. 根据实际业务需求添加或编辑标签 ,单击创建
    
    
    
    说明:
    应用名称只允许下划线、数字或中英文字符。
    标签用于标识和组织您在腾讯云的各种资源。例如:企业可能有多个业务部门,每个部门有一个或多个 LCIC 应用,这时,企业可以通过给 LCIC 应用添加标签来标记部门信息。标签并非必选项,您可根据实际业务需求添加或编辑。

    步骤二:获取 SDKAppId 和密钥(SecretKey)

    1. 进入应用管理 > 应用配置,获取 SDKAppId 。
    2. 进入 访问管理(CAM)控制台 获取密钥,若无密钥,需要在 API 密钥管理中进行新建,具体可参考 密钥管理
    
    
    

    步骤三:导入SDK

    pod 集成 SDK
    LCIC SDK 已经发布到 cocoapods 库,您可以通过配置 podfile 下载安装。
    pod 'TCICSDK_Pro', '1.8.5.6'

    步骤四:配置 App 权限

    在主 App 的 info.plist 中配置 App 的权限,LCIC SDK 需要以下权限:
    <key>NSCameraUsageDescription</key>
    <key>NSMicrophoneUsageDescription</key>
    <key>NSPhotoLibraryAddUsageDescription</key>
    <key>NSPhotoLibraryUsageDescription</key>

    步骤五:获取进入课堂所需参数

    1. 通过 控制台 进入应用管理 > 应用配置,获取 SDKAppId ,即为学校编号(schoolId)信息。
    2. 通过云 API 接口 CreateRoom 创建课堂,可以获取到课堂号(classid)信息。
    3. 通过调用云 API 接口 RegisterUser 注册用户,可以获取到对应的用户 ID(userid)信息。
    4. 通过云 API 接口 LoginUser 登录,可以获取到用户鉴权 token 信息。
    5. scene、lng、camera、mic、speaker 为非必要参数,如果不设置则使用的是默认值。
    字段
    类型
    含义
    备注
    必填
    schoolId
    int
    学校编号
    通过控制台进入应用管理 > 应用配置,获取 SDKAppId
    classId
    long
    课堂编号
    通过CreateRoom接口创建返回 RoomId 获取
    userId
    string
    用户账号
    通过RegisterUser接口获取
    token
    string
    后台鉴权参数
    通过LoginUser接口获取
    scene
    string
    场景名称
    用于区分不同的定制布局,通过 SetAppCustomContent 接口配置
    [roomConfig setValue:@"scene_name" forKey:@"scene"];
    lng
    string
    语言参数
    可传入zh-Hans、en,默认为中文(zh-Hans)。可通过此接口设置
    [roomConfig setValue:@"en" forKey:@"language"];
    camera
    int
    初始化开启摄像头
    1为开启摄像头,0为关闭摄像头,可通过roomConfig.jsParams 设置
    mic
    int
    初始化开启麦克风
    1为开启麦克风,0为关闭麦克风,可通过roomConfig.jsParams 设置
    speaker
    int
    初始化开启扬声器
    1为开启扬声器,0为关闭扬声器,可通过roomConfig.jsParams 设置

    步骤六:调起组件主页面

    只需传递 4 个参数就可调起 LCIC 组件主页面,分别为学校编号、课堂编号、用户账号和 token。
    TCICClassConfig *roomConfig = [[TCICClassConfig alloc] init];
    roomConfig.schoolId = 123456;
    roomConfig.userId = "test";
    roomConfig.token = "test_token";
    roomConfig.classId = 654321;
    [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:self
    selector:@selector(yourselector)
    name:@"TCICExitClassRoomCompleteNotify" object:nil];

    步骤七:SDK 授权申请

    需要您发送邮件申请 SDK 权限。请按以下模板发送邮件至 mediaservices@tencent.com 联系我们。信息确认无误的情况下我们将会在1个工作日完成。
    说明:
    包名用于快直播播放器签名授权,请提供所需授权的正式应用的 App Name、Package Name 和 Bundle ID 信息,并发送邮件。
    
    收件人:mediaservices@tencent.com
    主题
    实时互动-教育版 iOS SDK 授权申请
    内容
    公司名称:xxx 有限公司
    个人姓名:
    联系方式:
    App Name:
    Package Name (Android):
    Bundle ID (iOS):

    高级功能:移动端屏幕分享

    1. 创建App Group, 参见 TRTC 文档
    2. 创建Broadcast Upload Extension,参见 TRTC 文档
    3. 为新创建的 Target,依赖依赖 TCICSDK_ReplayKit,如下,之后重新 pod install 即可。
    target '新target名' do
    # Comment the next line if you don't want to use dynamic frameworks
    # use_frameworks!
    pod 'TCICSDK_Pro_ReplayKit'
    end
    4. 添加下列代码复制到 SampleHandler.m中,将 APPGROUP 改为第 1 步创建的 App Group
    #import "SampleHandler.h"
    #import <TXLiteAVSDK_ReplayKitExt/TXLiteAVSDK_ReplayKitExt.h>
    #import <TCICScreenKit/TCICScreenKit.h>
    // 注意:此处的 APPGROUP 需要改成上文中的创建的 App Group Identifier。
    #define APPGROUP ""
    
    @interface SampleHandler() <TXReplayKitExtDelegate>
    @end
    @implementation SampleHandler
    
    - (void)broadcastStartedWithSetupInfo:(NSDictionary<NSString *,NSObject *> *)setupInfo {
    [[TXReplayKitExt sharedInstance] setupWithAppGroup:APPGROUP delegate:self];
    
    [[TCICScreenKit sharedScreenKit] onScreenKitStarted];
    }
    - (void)broadcastPaused {
    // User has requested to pause the broadcast. Samples will stop being delivered.
    [[TCICScreenKit sharedScreenKit] onScreenKitPaused];
    }
    - (void)broadcastResumed {
    // User has requested to resume the broadcast. Samples delivery will resume.
    [[TCICScreenKit sharedScreenKit] onScreenKitResumed];
    }
    - (void)broadcastFinished {
    [[TXReplayKitExt sharedInstance] finishBroadcast];
    // User has requested to finish the broadcast.
    [[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 {
    switch (sampleBufferType) {
    case RPSampleBufferTypeVideo:
    [[TXReplayKitExt sharedInstance] sendVideoSampleBuffer:sampleBuffer];
    break;
    case RPSampleBufferTypeAudioApp:
    // Handle audio sample buffer for app audio
    break;
    case RPSampleBufferTypeAudioMic:
    // Handle audio sample buffer for mic audio
    break;
    
    default:
    break;
    }
    }
    @end
    5. 对接主 App 端的接收逻辑:目前主 App 中的使用 TCICSDK,已支持系统屏幕分享相关逻辑,只需要业务方配置好 App Group 即可,且在进入课堂前,设置 AppGroup 即可。
    
    TCICClassConfig *roomConfig = [[TCICClassConfig alloc] init];
    roomConfig.userId = "test";
    roomConfig.token = "test_token";
    roomConfig.classId = 123454;
    roomConfig.schoolId = xxxxx;
    
    // 通过KVC方式设置AppGroup
    [roomConfig setValue:@"group.com.xx.xxxx" forKey:@"appGroup"];

    注意事项

    1. TCICSDK 中已支持屏幕分享的触发按钮,具体可参见 TRTC 文档(可选),但该功能有限制条件。
    1.1 屏幕分享的触发按钮只支持 iOS12 以上,同时需要创建的工程,不依赖 Scene 生命周期,如果代码中已支持 Scenedelegate,可参见 Xcode 11 删除 Scenedelegate,进行移除。以 Demo 为例,弹出效果如下,单击开始直播即可。
    
    
    
    1.2 对于 iOS11 的机型,需要业务侧引导用户从远程控制中长按录屏进行触发,并选择业务自创建的 Broadcast Upload Extension 进行触发,下图以腾讯会议为例:
    
    
    
    2. 创建的 Upload ExtensionDeployment target 配置在 iOS 11.0Replay KitiOS11 才开始支持),调试时真机也尽量在 iOS11 之后。
    3. 主 App 要支持系统级屏幕分享,需要添加 Background Modes
    
    
    

    其它

    我们建议您在使用 LCICSDK 时,同时也接入腾讯 Bugly,帮助您快速发现并解决异常,同时掌握产品运营动态,及时跟进用户反馈。 接入指南参见 腾讯 Bugly 官网
    参见 开发 Demo
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持