有奖捉虫:行业应用 & 管理与支持文档专题 HOT

开发环境要求

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.3.7' pod 'TXLiteAVSDK_Professional', '11.6.15041'

步骤四:配置 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 权限。请按以下模板发送邮件至 tylerding@tencent.com 联系我们。信息确认无误的情况下我们将会在1个工作日完成。
注意:
一个旗舰版仅支持授权一个正式包名,请确认无误后发送相关信息。
说明:
包名用于快直播播放器签名授权,请提供所需授权的正式应用的?App Name、Package Name?和?Bundle ID?信息,并发送邮件。
?
收件人:tylerding@tencent.com
主题
实时互动-教育版 iOS SDK 授权申请
内容
公司名称:xxx 有限公司
个人姓名:
联系方式:
App Name:
Package Name (Android):?
Bundle ID (iOS):?

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

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

其它

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


http://www.vxiaotou.com