Mac

最近更新时间:2024-09-11 09:08:11

我的收藏

集成 SDK

本文主要介绍如何快速的将腾讯云 TEduBoard SDK 集成到您的项目中。如果您使用互动课堂方案,请前往 互动课堂集成

开发环境

Xcode 9.0+
OS X 10.10+ 的 Mac 真机
项目已配置有效的开发者签名

集成 TEduBoard SDK

您可以选择使用 CocoaPods 自动加载的方式,或者先下载 SDK 再将其导入到您当前的工程项目中。由于TEduBoard SDK 内部使用 IMSDK 作为内部信令通道,您还需 CocoaPods 或手动添加 IMSDK 依赖项。

CocoaPods

1. 安装 CocoaPods

在终端窗口中输入如下命令(需要提前在 Mac 中安装 Ruby 环境):
sudo gem install cocoapods

2. 创建 Podfile 文件

进入项目所在路径,输入以下命令行之后项目路径下会出现一个 Podfile 文件。
pod init

3. 编辑 Podfile 文件

编辑 Podfile 文件,支持选择版本号。
platform :macos, '10.11'

target 'TICDemo_Mac' do
# pod 'TEduBoard_Mac',:podspec=>'https://sdk.qcloudtiw.com/mac/prod/2.8.9.204/TEduBoard_Mac.podspec'
 pod 'TEduBoard_Mac''>=2.8.9.204'  
pod 'TXIMSDK_Plus_Mac''6.2.2363'  
pod 'YYModel'
end

互动白板默认使用 IMSDK 作为信令通道,如果您有独立的信令通道,无需集成 IMSDK。

4. 更新并安装 SDK

在终端窗口中输入如下命令以更新本地库文件,并安装 TEduBoard SDK:
pod install
或使用以下命令更新本地库版本:
pod update
pod 命令执行完后,会生成集成了 SDK 的 .xcworkspace 后缀的工程文件,双击打开即可。

手动集成

1. 下载 TEduBoard SDK
2. 前往 即时通信 IM 下载 IMSDK。互动白板默认使用 IMSDK 作为信令通道,如果您有独立的信令通道,请跳过此步。
3. 单击 Link Binary with Libraries 项展开,单击底下的“+”号图标去添加依赖库。



使用 TEduBoard SDK

1. #import SDK
在项目需要使用 SDK API 的文件里,引入具体的头文件:
#import <TEduBoard_Mac/TEduBoard.h>
2. 创建白板控制器
使用如下代码创建并初始化白板控制器:
// 创建并初始化白板控制器
//(1)鉴权配置
TEduBoardAuthParam *authParam = [[TEduBoardAuthParam alloc] init];
authParam.sdkAppId = _sdkAppId;
authParam.userId = _userId;
authParam.userSig = _userSig;
//(2)白板默认配置
TEduBoardInitParam *initParam = [[TEduBoardInitParam alloc] init];
_boardController = [[TEduBoardController alloc] initWithAuthParam:authParam roomId:_classId initParam:initParam];
//(3)添加白板事件回调
[_boardController addDelegate:self];
其中 _sdkAppId、_userId、_userSig、_classId 为需要您自己填写的参数。
3. 白板窗口获取及显示
onTEBInitonTEBHistroyDataSyncCompleted 回调方法内,使用如下代码获取并显示白板视图。
- (void)onTEBHistroyDataSyncCompleted
{
//(1)获取白板 NSView
NSView *boardView = [_boardController getBoardRenderView];
//(2)设置显示位置和大小
boardView.frame = CGRectMake(0, 0, width, height);
//(3)添加到父视图中
[self.view addSubview:boardView];
}
注意
1. onTEBInit 表示白板创建并鉴权完成。
2. onTEBHistroyDataSyncCompleted 表示历史数据加载完成,此时可调用白板的相关接口。
3. SDK 所有回调都在主线程内执行,因此可以在回调里直接执行 UI 操作。
4. 监听白板关键事件
在 onTEBError 和 onTEBWarning 回调方法内监听白板事件。
// 监听白板错误事件
- (void)onTEBError:(TEduBoardErrorCode)code msg:(NSString *)msg
{

}

// 监听白板告警事件
- (void)onTEBWarning:(TEduBoardWarningCode)code msg:(NSString *)msg
{

}
5. 白板数据同步
白板在使用过程中,需要在不同的用户之间进行数据同步(涂鸦数据等),SDK 默认使用 IMSDK 作为信令通道,您需要自行实现 IMSDK 的初始化、登录、加入群组操作,确保白板初始化时,IMSDK 已处于所指定的群组内。
步骤1:初始化 IMSDK
V2TIMSDKConfig *config = [[V2TIMSDKConfig alloc] init];
config.logLevel = V2TIM_LOG_WARN;
[[V2TIMManager sharedInstance] initSDK:sdkAppID config:config];
[[V2TIMManager sharedInstance] addIMSDKListener:listener];
[[V2TIMManager sharedInstance] addAdvancedMsgListener:self];
说明:
以上示例为 TIM V2 版本代码,IM 的版本请尽量用新版本,具体请查阅 IM 的 更新日志
如果您有其他业务使用了 IMSDK 并期望 IMSDK 的生命周期与 App 的生命周期保持一致,请在 AppDelegate 的 application:didFinishLaunchingWithOptions 方法中初始化 IMSDK,否则请在登录前初始化 IMSDK,在登出后反初始化 IMSDK。 步骤2:登录 IMSDK
[[V2TIMManager sharedInstance] login:userID userSig:userSig succ:^{
// 登录 IMSDK 成功
} fail:^(int code, NSString *desc) {
// 登录 IMSDK 失败
}];
说明:
以上示例为 TIM V2 版本代码,IM 的版本请尽量用新版本,具体请查阅 IM 的 更新日志
步骤3:加入群组
登录 IMSDK 成功后加入白板所在的群组。
[[V2TIMManager sharedInstance] joinGroup:classId msg:nil succ:^{
// 加入 IM 群组成功
} fail:^(int code, NSString *desc) {
// 加入 IM 群组失败
}];
说明:
以上示例为 TIM V2 版本代码,IM 的版本请尽量用新版本,具体请查阅 IM 的 更新日志
如果 IM 群组不存在,请先创建群组。
V2TIMGroupInfo *groupInfo = [[V2TIMGroupInfo alloc] init];
groupInfo.groupID = classId;
groupInfo.groupName = classId;
groupInfo.groupType = @"Public";
groupInfo.groupAddOpt = V2TIM_GROUP_ADD_ANY;
__weak typeof(self) ws = self;
[[V2TIMManager sharedInstance] createGroup:groupInfo memberList:nil succ:^(NSString *groupID) {
// 创建 IM 群组成功
} fail:^(int code, NSString *desc) {
// 创建 IM 群组失败
}];
说明:
以上示例为 TIM V2 版本代码,IM 的版本请尽量用新版本,具体请查阅 IM 的 更新日志
注意
1. 推荐业务后台使用 IM REST API 提前创建群组。
2. 不同的群组类型,群组功能以及成员数量有所区别,具体请查看 IM 群组系统。
6. 销毁白板
调用 unInit 方法后,内部将彻底销毁白板并停止计费,请您确保此接口的调用。
[_boardController unInit];
如果您使用 IMSDK 作为信令通道,请根据业务的需要决定是否退出群组、退出登录并反初始化。 步骤1:退出群组
[[V2TIMManager sharedInstance] quitGroup:classId succ:^{
// 登出 IMSDK 成功
} fail:^(int code, NSString *desc) {
// 登出 IMSDK 失败
}];
说明:
以上示例为 TIM V2 版本代码,IM 的版本请尽量用新版本,具体请查阅 IM 的更新日志
步骤2:登出 IMSDK
[[V2TIMManager sharedInstance] logout:^{
// 登出 IMSDK 成功
} fail:^(int code, NSString *desc) {
// 登出 IMSDK 失败
}];
说明:
以上示例为 TIM V2 版本代码,IM 的版本请尽量用新版本,具体请查阅 IM 的 更新日志
步骤3:反初始化 IMSDK
[[V2TIMManager sharedInstance] removeIMSDKListener:self];
[[V2TIMManager sharedInstance] removeAdvancedMsgListener:self];
[[V2TIMManager sharedInstance] unInitSDK];
说明:
以上示例为 TIM V2 版本代码,IM 的版本请尽量用新版本,具体请查阅 IM 的 更新日志
如果您有其他业务使用了 IMSDK 并期望 IMSDK 的生命周期与 App 的生命周期保持一致,无需调用此接口。