[TOC]
日期: 2019-11-19
创盛视联数码科技(北京)有限公司
白板与文档组件说明文档
该组件主要用来同步展示课堂内的PPT、白板、画笔相关信息;
一、文档组件基础功能使用流程
该部分主要实现了该学员可以同步查看课堂内老师、学员对文档的相关操作;如果需要更高级功能请参考其它相关功能API进行实现;
1.1 Base库对象的创建
//1、base库对象头文件引用
#import <CCClassRoomBasic/CCClassRoomBasic.h>
//2、base库对象属性添加
@property(nonatomic,strong)CCStreamerBasic *stremer;
//3、base库对象属性添加
self.stremer = [CCStreamerBasic sharedStreamer];
1.2 文档组件初始化、设置事件监听
白板与文档组件的核心类是CCDocViewManager;
//在工程需要的地方引入头文件(也可以写一个组件类单独管理)
#import <CCDocLibrary/CCDocLibrary.h>
//1、文档组件初始化
- (CCDocVideoView *)ccVideoView
{
if (!_ccVideoView) {
CGRect frame = CGRectMake(0, 0, 200, 100);
_ccVideoView = [[CCDocVideoView alloc]initWithFrame:frame];
//2、文档组件添加监听
[_ccVideoView addObserverNotify];
}
return _ccVideoView;
}
1.3 建立文档库与Base库的关系依赖
//建立文档库与Base库关联
- (void)addBasicClient:(CCStreamerBasic *)basic;
//示例:
[self.ccVideoView addBasicClient:self.stremer];
1.4 文档组件环境初始化(该步骤最好初始化完成后立即执行)
//文档组件初始化,建议先于startDocView一段时间调用
[self.docView initDocEnvironment];
1.5 将文档组件添加到需要展示的位置
//该处以一个控制器的view为例
[self.view addSubview:self.ccVideoView];
1.6 启动文档内容(文档、画笔)加载
[self.docView startDocView];
1.7 文档资源释放(当退出课堂时执行)
//1、移除监听
[self.docView removeObserverNotify];
if (self.docView)
{ //2、释放内部资源
[self.docView docRelease];
}
//3、释放文档实例对象
_docView = nil;
二、文档进阶功能接口说明
该部分是基于上面第一部分功能做进阶功能的说明;
2.1 修改文档组件尺寸
/** 设置frame */
- (void)setDocFrame:(CGRect)frame;
2.2 添加组件相关监听事件
//添加监听
- (void)addObserverNotify;
2.3 移除文档监听事件
//移除监听
- (void)removeObserverNotify;
2.4 设置日志开关
//设置日志开关
+ (void)setLogState:(BOOL)open;
2.5 画笔权限管理
- (void)setDocEditable:(BOOL)canEdit;
object 参数说明:
参数名称 | 参数类型 | 说明 | 是否必须 |
---|---|---|---|
canEdit | BOOL | YES:支持画笔;NO:不支持画笔 | 必选 |
2.6 设置画笔的粗细(支持老师端,或是被设为讲师,或是授权标注,才需要设置)
/** 设置画笔宽度 */
- (void)setStrokeWidth:(CGFloat)width;
object 参数说明:
参数名称 | 参数类型 | 说明 | 是否必须 |
---|---|---|---|
width | CGFloat | 设置画笔的粗细,精度为CGFloat类型 | 必选 |
2.7 设置画笔的颜色(支持老师端,或是被设为讲师,或是授权标注,才需要设置)
/** 设置画笔颜色 */
- (void)setStrokeColor:(UIColor *)color;
object 参数说明:
参数名称 | 参数类型 | 说明 | 是否必须 |
---|---|---|---|
color | UIColor | 画笔的颜色 | 必选 |
2.8 撤销画笔(支持老师端,或是被设为讲师,或是授权标注,才需要设置)
/** 撤销画笔(可以撤销所有人) */
- (void)revokeLastDraw;
/** 撤销(只能撤销学生) */
- (void)revokeLastDrawByStudent;
2.9 清空画笔数据(支持老师端,或是被设为讲师,或是授权标注,才需要设置)
1、清空当前页的画笔数据:
/** 清除当前页的画笔数据 */
- (void)revokeAllDraw;
2、清空整个文档的画笔数据
/** 清空整个文档的画笔数据 */
- (void)revokeAllDocDraw;
2.10 橡皮擦功能
1、是否开启橡皮擦功能:
/** 设置当前是否是橡皮擦 */
- (void)setCurrentIsEraser:(BOOL)eraser;
object 参数说明:
参数名称 | 参数类型 | 说明 | 是否必须 |
---|---|---|---|
eraser | BOOL | 是否开启橡皮擦 | 必选 |
2.11 手势支持功能
1、是否打开文档手势支持:
/** 设置手势开关 */
- (void)setGestureOpen:(BOOL)open;
如果关闭手势支持,文档会恢复缩放前的状态;
object 参数说明:
参数名称 | 参数类型 | 说明 | 是否必须 |
---|---|---|---|
open | BOOL | 是否开启文档手势 | 必选 |
2.12 设为讲师/取消设为讲师
1、设为讲师
/** 设为讲师 */
- (BOOL)authUserAsTeacher:(NSString *)userId;
参数 | 参数说明 |
---|---|
userId | 指定的用户id |
2、取消设为讲师
/** 取消设为讲师 */
- (BOOL)cancleAuthUserAsTeacher:(NSString *)userId;
参数 | 参数说明 |
---|---|
userId | 指定的用户id |
2.13 授权标注/取消授权标注
1、授权标注
/** 授权标注 */
- (BOOL)authUserDraw:(NSString *)userId;
参数 | 参数说明 |
---|---|
userId | 指定的用户id |
2、取消授权标注
/** 取消授权标注 */
- (BOOL)cancleAuthUserDraw:(NSString *)userId;
参数 | 参数说明 |
---|---|
userId | 指定的用户id |
2.14 设置文档背景色
/** 设置文档区域背景色 */
- (void)setDocBackGroundColor:(UIColor *)color;
三、文档辅助功能接口说明
3.1 文档加载状态监听
1、文档加载监听
/** 文档加载状态监听 */
- (void)setOnDpCompleteListener:(CCDocLoadBlock)OnDpCompleteListener;
3.2 插播音视频功能相关
1、设置player容器
//设置 player frame
- (void)setVideoPlayerFrame:(CGRect)playerFrame;
2、修改player位置大小
//设置 player 容器
- (BOOL)setVideoPlayerContainer:(UIView *)playerContainer;
四、文档库、文档切换、文档翻页功能相关
该部分主要说明获取房间内的关联文档、文档切换、文档翻页相关功能;
4.1 获取房间关联文档
1、获取房间关联文档
/*!
@method
@abstract 获取房间机构文档
@param roomID 房间ID(缺省为当前登录的房间ID)
@param userID 房间ID(缺省为当前登录的房间userID)
@param docID 文档ID(可选)
@param docName 文档名字(可选)
@param page 请求页码(获取指定页,默认返回第一页<可选>)
@param size 请求每页条目数(每页的数据条数,默认每页50<可选>)
@param completion 回调
@return 操作结果
*/
- (BOOL)getRelatedRoomDocs:(NSString *)roomID
userID:(NSString *)userID
docID:(NSString *)docID
docName:(NSString *)docName
pageNumber:(int)page
pageSize:(int)size
completion:(CCComletionBlock)completion;
4.2 取消文档关联
1、取消房间文档关联
/*!
@method
@abstract 删除机构文档
@param docID 文档ID
@param roomID 房间ID(缺省为当前登录的房间ID)
@param userID 房间ID(缺省为当前登录的房间userID)
@param completion 回调
@return 操作结果
*/
- (BOOL)unReleatedDoc:(NSString *)docID roomID:(NSString *)roomID userID:(NSString *)userID completion:(CCComletionBlock)completion;
4.3 doc切为白板
/** 切换到白板 */
- (void)docPageToWhiteBoard;
4.4 doc切换文档
/** 切换到另一个文档 */
- (void)docChangeTo:(CCDoc *)doc;
4.5 doc向前翻页
/** 向前翻页 */
- (void)docPageToFront;
4.6 doc回退翻页
/** 回退翻页 */
- (void)docPageToBack;
4.7 获取当前文档id
如果是白板则返回『』
/** 获取当前文档 */
- (NSString *)docCurrentDocId;
五、设为讲师、授权相关监听
5.1 添加消息监听
在需要画板的相关控制器内根据需求添加与移除监听事件
#pragma mark -- 接收
-(void)addObserver
{
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(receiveSocketEvent:) name:CCNotiReceiveSocketEvent object:nil];
}
-(void)removeObserver
{
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
5.2 监听事件处理
收到监听事件后根据业务需求进行其它相关操作
- (void)receiveSocketEvent:(NSNotification *)noti
{
CCSocketEvent event = (CCSocketEvent)[noti.userInfo[@"event"] integerValue];
id value = noti.userInfo[@"value"];
if (event == CCSocketEvent_ReciveDrawStateChanged)
{
//授权标注事件
CCUser *user = noti.userInfo[@"user"];
if (user.user_drawState)
{
//被授权标注..客户开展后续自己的业务
}
}
else if (event == CCSocketEvent_ReciveAnssistantChange)
{
//设为讲师事件
CCUser *user = noti.userInfo[@"user"];
if (user.user_AssistantState)
{
//被设为讲师..客户开展后续自己的业务
}
}
}