# 涂鸦功能管理

# 引用涂鸦模块

将涂鸦模块的 JMDoodle.framework 文件放入工程中的 SDK 目录下,在项目中导入 JMDoodle.framework, 在需要使用 JMDoodle.framework 的文件中添加以下代码

#import <JMDoodle/JMDoodle.h>

集成涂鸦功能前,请确保您已经进行了涂鸦模块的初始化。

// 初始化涂鸦模块,建议声明在单例中
JCDoodle *doodle = [JCDoodle create:nil];
//如果需要使用涂鸦模块,需要在JCConference模块初始化的时候传入doodle
JCConference *conference = [JCConference create:_client mediaDevice:_mediaDevice doodle:_doodle callback:self];

# 涂鸦组件初始化

对涂鸦组件进行初始化操作,可通过调用 initWithJCDoodle (opens new window) 接口进行初始化。

/**
 * 初始化DoodleLayout控件
 * @param conference JCConference对象
 * @param client JCClient对象
 * @param doodle JCDoodle对象
 */
- (instancetype)initWithJCDoodle:(JCDoodle *)doodle WithConference:(JCConference *)conference WithClient:(JCClient *)client;

其中 doodle 为涂鸦模块类,conference 为会控模块类,client 为登录模块类。

需要在涂鸦组件创建之后进行调用。

示例代码:

//初始化涂鸦组件
DoodleLayout *doodleLayout = [[DoodleLayout alloc] initWithJCDoodle:doodle WithConference:conference WithClient:client];

# 涂鸦组件设置监听

涂鸦组件创建成功后,可以通过设置 DoodleLayoutDelegate (opens new window) 进行设置涂鸦监听,设置之后可以监听结束涂鸦事件和清除涂鸦事件。

//JCDoodle 回调代理
@property (nonatomic, weak) id<DoodleLayoutDelegate> delegate

其中 DoodleLayoutDelegate (opens new window) 有以下回调。

@protocol DoodleLayoutDelegate <NSObject>

//结束涂鸦回调
- (void)onExitDoodle;

//清除涂鸦回
- (void)onWillCleanDoodle;

@end

需要在涂鸦组件创建之后进行调用。

示例代码:

//创建涂鸦组件
DoodleLayout *doodleLayout = [[DoodleLayout alloc] initWithJCDoodle:doodle WithConference:conference WithClient:client];
//设置涂鸦监听
doodleLayout.delegate = self;
- (void)onExitDoodle {
  //处理结束涂鸦后的事件,需要调用conference的stopDoodle方法停止涂鸦
  [conference stopDoodle];
}

- (void)onWillCleanDoodle {
  //处理清除涂鸦后的事件,需要调用doodleLayout中的cleanDoodle方法清除涂鸦
  [doodleLayout cleanDoodle];
}

# 显示涂鸦组件

显示涂鸦接口能够将隐藏的涂鸦组件进行显示,通过调用 showDoodle (opens new window) 接口显示涂鸦组件。

/**
 * 显示白板涂鸦
 */
- (void)showDoodle;

需要在涂鸦组件初始化之后进行调用。

示例代码:

//初始化涂鸦组件
DoodleLayout *doodleLayout = [[DoodleLayout alloc] initWithJCDoodle:doodle WithConference:conference WithClient:client];
//开始涂鸦
[doodleLayout showDoodle];

# 隐藏涂鸦组件

隐藏涂鸦接口能够将显示的涂鸦组件进行隐藏,通过调用 dismissDoodle (opens new window) 接口隐藏涂鸦组件。

/**
 * 隐藏白板涂鸦
 */
- (void)dismissDoodle;

需要在涂鸦组件初始化之后进行调用。

示例代码:

//初始化涂鸦组件
DoodleLayout *doodleLayout = [[DoodleLayout alloc] initWithJCDoodle:doodle WithConference:conference WithClient:client];
//结束涂鸦
[doodleLayout dismissDoodle];

# 开启涂鸦

/**
 * 开启涂鸦
 */
- (bool)startDoodle;

调用开启涂鸦接口后会议中的成员会收到 onDoodleStart (opens new window) 回调。

/**
 * 涂鸦开启通知
 *
 * @param doodleUserId 涂鸦发起者
 */
- (void)onDoodleStart:(NSString *)doodleUserId;

示例代码:

//初始化涂鸦组件
DoodleLayout *doodleLayout = [[DoodleLayout alloc] initWithJCDoodle:doodle WithConference:conference WithClient:client];
//开启涂鸦
[conference startDoodle];
...

//收到涂鸦开启通知
- (void)onDoodleStart {
  [doodleLayout showDoodle];
}

收到 onDoodleStart (opens new window) 回调后调用 doodleLayout (opens new window) 中的 showDoodle (opens new window) 方法将涂鸦组件进行显示。

# 关闭涂鸦

/**
 * 关闭涂鸦
 */
- (bool)stopDoodle;

调用关闭涂鸦接口后会议中的成员会收到 onDoodleStop (opens new window) 回调。

/**
 * 涂鸦关闭通知
 */
- (void)onDoodleStop;

示例代码:

//初始化涂鸦组件
DoodleLayout *doodleLayout = [[DoodleLayout alloc] initWithJCDoodle:doodle WithConference:conference WithClient:client];
//关闭涂鸦
[conference stopDoodle];
...

//收到涂鸦关闭通知
- (void)onDoodleStop {
  [doodleLayout dismissDoodle];
}

收到 onDoodleStop (opens new window) 回调后调用 doodleLayout (opens new window) 中的 dismissDoodle (opens new window) 方法将涂鸦组件进行隐藏。

# 清除涂鸦

通过调用 cleanDoodle (opens new window) 接口能够将涂鸦轨迹进行清除。

/**
 * 清除涂鸦
 */
- (void)cleanDoodle;

需要在涂鸦组件初始化之后进行调用。

示例代码:

//初始化涂鸦组件
DoodleLayout *doodleLayout = [[DoodleLayout alloc] initWithJCDoodle:doodle WithConference:conference WithClient:client];
//清除涂鸦
[doodleLayout cleanDoodle];

TIP

如果成员加入会议时,该会议已经开始了涂鸦,此时需要显示之前的涂鸦,可以调用 showDoodle (opens new window) 接口进行显示。

示例代码:

//判断是否有发起的涂鸦
if (conference.getConferenceInfo.getDoodleOwnerId && ![conference.getConferenceInfo.getDoodleOwnerId isEqualToString:@""]) {
    [doodleLayout showDoodle];
}