WhiteRoom Class Reference
Other Methods
observerId
@property (nonatomic, strong, readonly) NSNumber *observerId
用户在当前房间中的用户 ID。与该用户在 WhiteRoomMember 中的 memberId 相同。
uuid
@property (nonatomic, copy, readonly) NSString *uuid
房间 UUID,即房间唯一标识符。
globalState
@property (nonatomic, strong, readonly) WhiteGlobalState *globalState
房间的全局状态。详见 WhiteGlobalState。
memberState
@property (nonatomic, strong, readonly) WhiteReadonlyMemberState *memberState
工具信息。详见 WhiteReadonlyMemberState。
roomMembers
@property (nonatomic, strong, readonly) NSArray<WhiteRoomMember*> *roomMembers
在线成员信息。详见 WhiteRoomMember。
broadcastState
@property (nonatomic, strong, readonly) WhiteBroadcastState *broadcastState
用户视角状态信息, 包括用户当前场景状态、主播信息。详见 WhiteBroadcastState。
scale
@property (nonatomic, assign, readonly) CGFloat scale
视角缩放比例。
state
@property (nonatomic, strong, readonly) WhiteRoomState *state
房间状态信息,详见 WhiteDisplayerState。
sceneState
@property (nonatomic, strong, readonly) WhiteSceneState *sceneState
白板页面(场景)状态。详见 WhiteSceneState。
phase
@property (nonatomic, assign, readonly) WhiteRoomPhase phase
房间连接状态。详见 WhiteRoomPhase。
disconnectedBySelf
@property (nonatomic, assign, readonly) BOOL disconnectedBySelf
用户是否主动断开与白板房间的连接。在调用 disconnect 主动断连时,该值会被立即赋值为 YES。
writable
@property (nonatomic, assign, readonly, getter=isWritable) BOOL writable
本地用户在当前互动白板实时房间是否为互动模式。
讨论
-
YES:互动模式,即具有读写权限。
-
NO:订阅模式,即具有只读权限。
delay
@property (nonatomic, assign, readonly) NSTimeInterval delay
本地显示远端白板内容的延时,单位为秒,默认值为 0。取值大于等于 0。
Other Methods
setDrawOnlyApplePencil:
- (void)setDrawOnlyApplePencil:(BOOL)drawOnlyPencil
设置是否只允许用户使用 Apple Pencil 在白板上绘制和书写。
参数
参数名 | 描述 |
---|---|
drawOnlyPencil | 是否只允许用户使用 Apple Pencil 绘制和书写:
|
讨论
设置 setDrawOnlyApplePencil(YES) 后,用户只能使用 Apple Pencil 在白板上绘制和书写,无法使用手指绘制和书写。 如果用户用手指触碰白板,SDK 会触发两个 fireRoomStateChanged 回调,报告当前使用的白板工具 (memberState) 在 ApplianceClicker 和 AppliancePencil 之间发生了切换。
Note:-
该属性仅在 iPad 设备上生效。
-
该属性的设置建议跟随 UIPencilInteraction.prefersPencilOnlyDrawing 的设置。
setGlobalState:
- (void)setGlobalState:(WhiteGlobalState *)globalState
修改互动白板实时房间的公共全局状态。
参数
参数名 | 描述 |
---|---|
globalState | 房间公共全局状态,自定义字段。详见 WhiteGlobalState。 |
讨论
实时房间的 globalState 属性为公共全局变量,房间内所有用户看到的都是相同的 globalState,所有互动模式用户都可以读写。修改 globalState 属性会立即生效并同步给所有用户。
1.0 迁移用户,请阅读文档站中 [页面(场景)管理] ,使用 setScencePath。
setMemberState:
- (void)setMemberState:(WhiteMemberState *)modifyState
修改房间内的工具状态。
参数
参数名 | 描述 |
---|---|
modifyState | 需要修改的工具状态,详见 WhiteMemberState。 |
讨论
调用该方法会立刻更新房间的 WhiteMemberState。
你可以调用 getMemberStateWithResult 获取最新设置的工具状态。
setViewMode:
- (void)setViewMode:(WhiteViewMode)viewMode
切换视角模式。
参数
参数名 | 描述 |
---|---|
viewMode | 视角模式。 |
讨论
互动白板实时房间支持对用户设置以下视角模式:
-
Broadcaster: 主播模式。该模式下用户可以主动调整视角,并将自己的视角同步给房间内所有其他用户。
-
Follower:跟随模式。该模式下用户的视角会跟随主播的视角。
-
Freedom:(默认)自由模式。该模式下用户可以主动调整视角,不受其他用户视角模式设置的影响,也不会影响其他用户的视角模式设置。
该方法的设置会影响房间内所有用户的视角模式:
-
当房间内不存在主播模式的用户时,所有用户的视角都默认为自由模式。
-
当一个用户的视角设置为主播模式后,房间内其他所有用户(包括新加入房间的用户)的视角会被自动设置为跟随模式。
-
当跟随模式的用户进行白板操作时,其视角会自动切换为自由模式。你可以调用 disableOperations 禁止跟随模式的用户操作白板,以保证其保持跟随模式。
debugInfo:
- (void)debugInfo:(void ( ^ _Nullable ) ( NSDictionary *_Nullable dict ))completionHandler
获取 debug 信息。
参数
参数名 | 描述 |
---|---|
completionHandler | 方法调用结果:
|
disconnect:
- (void)disconnect:(void ( ^ _Nullable ) ( void ))completeHandler
主动断开与互动白板实时房间的连接。
参数
参数名 | 描述 |
---|---|
completeHandler | 调用结果:
|
讨论
该方法会把与当前房间对象相关的所有资源释放掉。如果要再次加入房间,需要重新调用 joinRoomWithConfig。
setWritable:completionHandler:
- (void)setWritable:(BOOL)writable completionHandler:(void ( ^ _Nullable ) ( BOOL isWritable , NSError *_Nullable error ))completionHandler
设置用户在房间中是否为互动模式。 在加入房间前,就可以在 WhiteRoomConfig 中设置 isWritable ,来决定该模式。
参数
参数名 | 描述 |
---|---|
writable | 用户在房间中是否为互动模式:
|
completionHandler | 方法调用结果:
|
disableCameraTransform:
- (void)disableCameraTransform:(BOOL)disableCameraTransform
禁止/允许用户调整(移动或缩放)视角。
参数
参数名 | 描述 |
---|---|
disableCameraTransform | 是否禁止用户调整视角:
|
disableDeviceInputs:
- (void)disableDeviceInputs:(BOOL)disable
禁止/允许用户操作工具。
参数
参数名 | 描述 |
---|---|
disable | 是否禁止用户操作工具:
|
dispatchMagixEvent:payload:
- (void)dispatchMagixEvent:(NSString *)eventName payload:(NSDictionary *)payload
发送自定义事件。
参数
参数名 | 描述 |
---|---|
eventName | 自定义事件名称,详见 WhiteEvent。 |
payload | 自定义事件内容,详见 WhiteEvent。 |
pptNextStep
pptPreviousStep
insertText:y:textContent:completionHandler:
- (void)insertText:(CGFloat)x y:(CGFloat)y textContent:(NSString *)textContent completionHandler:(void ( ^ ) ( NSString *textId ))completionHandler
在指定位置插入文字。
参数
参数名 | 描述 |
---|---|
x | 第一个文字左侧边的中点在世界坐标系中的 X 轴坐标。 |
y | 第一个文字左侧边的中点在世界坐标系中的 Y 轴坐标。 |
textContent | 初始的文字内容,不传则为空。 |
completionHandler | 方法调用结果:
|
updateText:textContent:
- (void)updateText:(NSString *)textId textContent:(NSString *)textContent
更新指定文本的内容。
参数
参数名 | 描述 |
---|---|
textId | 文字标识符。 |
textContent | 文字内容。 |
insertImage:src:
- (void)insertImage:(WhiteImageInformation *)imageInfo src:(NSString *)src
插入图片显示区域。
参数
参数名 | 描述 |
---|---|
imageInfo | 图片信息,详见 WhiteImageInformation。 |
src | 图片 URL 地址,详见 WhiteImageInformation。 |
讨论
SDK 会根据你传入的 imageInfo 在白板上设置并插入图片的显示区域。
Note:你也可以调用 insertImage 方法同时传入图片信息和图片的 URL 地址,在白板中插入并展示图片。
insertImage:
- (void)insertImage:(WhiteImageInformation *)imageInfo
插入图片显示区域。
参数
参数名 | 描述 |
---|---|
imageInfo | 图片信息,详见 WhiteImageInformation。 |
讨论
SDK 会根据你传入的 imageInfo 在白板上设置并插入图片的显示区域。
completeImageUploadWithUuid:src:
disableEraseImage:
- (void)disableEraseImage:(BOOL)disable
关闭/开启橡皮擦擦除图片功能。
参数
参数名 | 描述 |
---|---|
disable | 是否关闭橡皮擦擦除图片功能:
|
syncBlockTimestamp:
setTimeDelay:
MainView Methods
addApp:completionHandler:
- (void)addApp:(WhiteAppParam *)appParams completionHandler:(void ( ^ ) ( NSString *appId ))completionHandler
插入小窗应用。
参数
参数名 | 描述 |
---|---|
appParams | 小窗应用属性,详见 WhiteAppParam。 |
completionHandler | 方法调用结果:
|
讨论
多窗口模式下,PPT 或自定义插件等可以作为小窗应用插入白板,在一个新的窗口中展示。
Note: 多次插入同一个小窗应用返回的 appId 为 nil,表示插入失败。
closeApp:completionHandler:
queryAllAppsWithCompletionHandler:
- (void)queryAllAppsWithCompletionHandler:(void ( ^ ) ( NSDictionary<NSString*,WhiteAppSyncAttributes*> *apps , NSError *_Nullable error ))completionHandler
查询所有小窗应用的信息。
参数
参数名 | 描述 |
---|---|
completionHandler | 查询结果回调。
|
讨论
该方法仅在多窗口下有效。
queryApp:completionHandler:
- (void)queryApp:(NSString *)appId completionHandler:(void ( ^ ) ( WhiteAppSyncAttributes *appParam , NSError *_Nullable error ))completionHandler
查询指定小窗应用的信息。
参数
参数名 | 描述 |
---|---|
appId | 小窗应用 ID。 |
completionHandler | 查询结果回调。
|
讨论
该方法仅在多窗口下有效。
dispatchDocsEvent:options:completionHandler:
- (void)dispatchDocsEvent:(WhiteWindowDocsEventKey)docsEvent options:(WhiteWindowDocsEventOptions *_Nullable)options completionHandler:(void ( ^ ) ( bool success ))completionHandler
发送文档操作事件。 在多窗口模式下,该方法可以用来操作当前聚焦的文档窗口。
参数
参数名 | 描述 |
---|---|
docsEvent | 事件类型。可传入以下事件: |
options | 可选事件参数。该参数仅在设置 docsEvent 为 WhiteWindowDocsEventJumpToPage 时有效,用于传入跳转的页码。详见 WhiteWindowDocsEventOptions。 |
completionHandler | 方法调用结果。 |
讨论
Warning: 该方法只有在文档视图加载完毕时才能调用。不支持多次连续调用,只有当前的转场动画播放完毕之后才能进行下一次调用。
Scene Methods
getSceneStateWithResult:
- (void)getSceneStateWithResult:(void ( ^ ) ( WhiteSceneState *state ))result
获取房间当前场景目录下的场景状态。
参数
参数名 | 描述 |
---|---|
result | 回调。返回当前场景目录下的场景状态,详见 WhiteSceneState。 |
getScenesWithResult:
- (void)getScenesWithResult:(void ( ^ ) ( NSArray<WhiteScene*> *scenes ))result
获取房间当前场景目录下的场景列表。
参数
参数名 | 描述 |
---|---|
result | 回调。返回当前场景目录下的场景列表,详见 WhiteScene。 |
setScenePath:
- (void)setScenePath:(NSString *)path
切换至指定的场景。
参数
参数名 | 描述 |
---|---|
path | 想要切换到的场景的场景路径,请确保场景路径以 “/",由场景目录和场景名构成,例如,/math/classA。 |
讨论
方法调用成功后,房间内的所有用户看到的白板都会切换到指定场景。
Note:-
该方法为同步调用。
-
调用 setScenePath 方法修改或新增场景后,无法通过 setScenePath 立即获取最新的场景状态。此时,如果需要立即获取最新的场景状态,可以调用 setScenePath:completionHandler:。
场景切换失败可能有以下原因:
-
路径不合法,请确保场景路径以 “/",由场景目录和场景名构成。
-
场景路径对应的场景不存在。
-
传入的路径是场景目录的路径,而不是场景路径。
setScenePath:completionHandler:
- (void)setScenePath:(NSString *)dirOrPath completionHandler:(void ( ^ _Nullable ) ( BOOL success , NSError *_Nullable error ))completionHandler
切换至指定的场景。
参数
参数名 | 描述 |
---|---|
dirOrPath | 想要切换到的场景的场景路径,请确保场景路径以 “/",由场景目录和场景名构成,例如,/math/classA. |
completionHandler | 方法调用结果:
|
讨论
方法调用成功后,房间内的所有用户看到的白板都会切换到指定场景。
Note:-
该方法为异步调用。
-
调用 setScenePath 方法修改或新增场景后,你可以通过 getSceneStateWithResult: 立即获取最新的场景状态。
-
场景切换失败可能有以下原因:
-
路径不合法,请确保场景路径以 “/",由场景目录和场景名构成。
-
场景路径对应的场景不存在。
-
传入的路径是场景目录的路径,而不是场景路径。
-
setSceneIndex:completionHandler:
- (void)setSceneIndex:(NSUInteger)index completionHandler:(void ( ^ _Nullable ) ( BOOL success , NSError *_Nullable error ))completionHandler
切换至当前场景目录下的指定场景。
参数
参数名 | 描述 |
---|---|
index | 目标场景在当前场景目录下的索引号。 |
completionHandler | 方法调用结果:
|
讨论
方法调用成功后,房间内的所有用户看到的白板都会切换到指定场景。
Note:指定的场景必须在当前场景目录中,否则,方法调用会失败。
putScenes:scenes:index:
- (void)putScenes:(NSString )dir scenes:(NSArray<WhiteScene> *)scenes index:(NSUInteger)index
在指定场景目录下插入多个场景。
参数
参数名 | 描述 |
---|---|
dir | 场景目录名称,必须以 / 开头。不能为场景路径。 |
scenes | 由多个场景构成的数组。单个场景的字段详见 WhiteScene。 |
index | 待插入的多个场景中,第一个场景在该场景目录的索引号。如果传入的索引号大于该场景目录已有场景总数,新插入的场景会排在现有场景的最后。场景的索引号从 0 开始。 |
讨论
Note:调用该方法插入多个场景后不会切换到新插入的场景。如果要切换至新插入的场景,需要调用 setScenePath。
cleanScene:
- (void)cleanScene:(BOOL)retainPPT
清除当前场景的所有内容。
参数
参数名 | 描述 |
---|---|
retainPPT | 是否保留 PPT 内容:
|
removeScenes:
- (void)removeScenes:(NSString *)dirOrPath
删除场景或者场景目录。
参数
参数名 | 描述 |
---|---|
dirOrPath | 场景目录路径或者场景路径。如果传入的是场景目录,则会删除该场景目录下的所有场景。
|
moveScene:target:
- (void)moveScene:(NSString *)source target:(NSString *)target
移动场景。
参数
参数名 | 描述 |
---|---|
source | 需要移动的场景原路径。必须为场景路径,不能是场景目录的路径。 |
target | 目标场景目录的路径或目标场景的路径:
|
讨论
成功移动场景后,场景路径也会改变。
Note:-
该方法只能移动场景,不能移动场景目录,即 source 只能是场景路径,不能是场景目录路径。
-
该方法支持改变指定场景在当前所属场景目录下的位置,也支持将指定场景移至其他场景目录。
copy
paste
- (void)paste
粘贴复制的内容。
讨论
该方法会将 copy 方法复制的内容粘贴到白板中(用户当前的视角中间)。
Note:-
该方法仅当 disableSerialization 设为 NO 时生效。
-
多次调用该方法时,不能保证粘贴的内容每次都在用户当前的视角中间,可能会出现随机偏移。
duplicate
- (void)duplicate
复制并粘贴选中的内容。
讨论
该方法会将选中的内容复制并粘贴到白板中(用户当前的视角中间)。
Note:-
该方法仅当 disableSerialization 设为 NO 时生效。
-
多次调用该方法时,不能保证粘贴的内容每次都在用户当前的视角中间,可能会出现随机偏移。
deleteOperation
- (void)deleteOperation
删除选中内容。
disableSerialization:
- (void)disableSerialization:(BOOL)disable
开启/禁止本地序列化。
参数
参数名 | 描述 |
---|---|
disable | 是否禁止本地序列化:
|
讨论
设置 disableSerialization(true) 后,以下方法将不生效:
-
redo
-
undo
-
duplicate
-
copy
-
paste
如果要设置 disableSerialization(false),必须确保同一房间内所有用户使用的 SDK 满足以下版本要求,否则会导致 app 客户端崩溃。
-
Web SDK 2.9.2 或之后版本
-
Android SDK 2.9.3 或之后版本
-
iOS SDK 2.9.3 或之后版本
redo
undo
Asynchronous Methods
getGlobalStateWithResult:
- (void)getGlobalStateWithResult:(void ( ^ ) ( WhiteGlobalState *state ))result
获取房间的全局状态。
参数
参数名 | 描述 |
---|---|
result | 回调。返回房间的全局状态,详见 WhiteGlobalState。 |
讨论
Note:-
该方法为异步调用。
-
通过 setCustomGlobalStateClass 设置自定义状态后,如需异步获取,可以通过 getRoomStateWithResult 获取自定义的当前房间状态。
-
调用 setGlobalState 方法后,可以立刻调用该方法。
getMemberStateWithResult:
- (void)getMemberStateWithResult:(void ( ^ ) ( WhiteMemberState *state ))result
获取当前的工具状态。
参数
参数名 | 描述 |
---|---|
result | 回调。返回当前的工具状态,详见 WhiteMemberState 。 |
讨论
Note:该方法为异步调用。调用 setMemberState 方法后,可以立刻调用该方法。
getRoomMembersWithResult:
- (void)getRoomMembersWithResult:(void ( ^ ) ( NSArray<WhiteRoomMember*> *roomMembers ))result
获取实时房间用户列表。
参数
参数名 | 描述 |
---|---|
result | 回调。返回当前房间的用户列表,详见 WhiteRoomMember。 |
讨论
Note:-
该方法为异步调用。
-
房间的用户列表仅包含互动模式(具有读写权限)的用户,不包含订阅模式(只读权限)的用户。
getBroadcastStateWithResult:
- (void)getBroadcastStateWithResult:(void ( ^ ) ( WhiteBroadcastState *state ))result
获取用户视角状态。
参数
参数名 | 描述 |
---|---|
result | 回调。返回当前用户视角状态,详见 WhiteBroadcastState。 |
讨论
Note:该方法为异步调用。
getRoomPhaseWithResult:
- (void)getRoomPhaseWithResult:(void ( ^ ) ( WhiteRoomPhase phase ))result
获取房间连接状态。
参数
参数名 | 描述 |
---|---|
result | 回调。返回当前房间连接状态,详见 WhiteRoomPhase。 |
讨论
Note:该方法为异步调用。
getZoomScaleWithResult:
- (void)getZoomScaleWithResult:(void ( ^ ) ( CGFloat scale ))result
获取用户当前的视角缩放比例。该方法为异步调用。
参数
参数名 | 描述 |
---|---|
result | 回调。返回当前视角缩放比例。 |
getRoomStateWithResult:
- (void)getRoomStateWithResult:(void ( ^ ) ( WhiteRoomState *state ))result
获取当前房间状态。
参数
参数名 | 描述 |
---|---|
result | 回调。返回当前房间状态,详见 WhiteRoomState。 |
讨论
Note:该方法为异步调用。
Deprecated Methods
disableOperations:
- (void)disableOperations:(BOOL)disable
该方法已废弃,请使用 disableDeviceInputs 和 disableCameraTransform。
参数
参数名 | 描述 |
---|---|
disable | 是否禁止操作,true 为禁止。 |
讨论
禁止操作。