PLVWebViewBridge
Objective-C
@interface PLVWebViewBridge : NSObject
@property (nonatomic, weak) id<PLVWebViewBridgeProtocol> delegate;
+ (instancetype)bridgeWithWebview:(WKWebView *)webView webviewDelegate:(id<WKNavigationDelegate>)webViewDelegate;
+ (instancetype)bridgeWithWebview:(WKWebView *)webView;
- (void)setWebViewDelegate:(id<WKNavigationDelegate> __nullable)webViewDelegate;
#pragma mark - Call JS Method
/// 设置用户信息
/// @param userDict socket 用户登录信息
- (void)setUserInfo:(NSDictionary *)userDict;
/// 白板、PPT内部翻页
/// @note 区别'changePPTWithAutoId:pageNumber:',不可用于白板与PPT之间的切换,或打开新的白板或PPT
/// @param type 翻页类型
- (void)changePPTPageWithType:(PLVChangePPTPageType)type;
#pragma mark 观看专用方法
/// 刷新PPT内容
/// @param jsonObject PPT内容
/// @param delay 延迟时间 (单位毫秒)
- (void)refreshPPTWithJsonObject:(NSDictionary *)jsonObject delay:(NSUInteger)delay;
/// 【观看回放时】设置本地ppt路径
/// @param path ppt路径
- (void)pptSetLocalPath:(NSString *)path;
- (void)pptLocalStartWithVideoId:(NSString *)videoId vid:(NSString *)vid;
/// 设置视频SEI信息
/// @param newTimeStamp 时间戳信息
- (void)setSEIData:(long)newTimeStamp;
/// 加载回放PPT
/// @param vid 回放视频的vid
- (void)pptStartWithVid:(NSString *)vid DEPRECATED_MSG_ATTRIBUTE("已废弃,请使用pptStartWithVideoId:roomId:");
/// 【观看回放时】加载回放PPT
/// @param videoId 回放视频的videoId(请求'直播回放视频的信息'接口返回的视频Id,与后台回放列表看到的vid不是同一个数据)
/// @param channelId 频道Id
- (void)pptStartWithVideoId:(NSString *)videoId channelId:(NSString *)channelId;
/// 【观看暂存时】加载暂存PPT
/// @param fileId 暂存视频的fileId
/// @param channelId 频道Id
- (void)pptStartWithFileId:(NSString *)fileId channelId:(NSString *)channelId;
#pragma mark 推流专用方法
/// 设置或取消画笔权限
/// @param userType 用户权限, speaker 代表控制ppt权限+画笔权限
- (void)setPaintPermission:(NSString *)userType;
/// 设置画板是否处于可绘制状态
/// @param open 打开或关闭画板
- (void)setPaintStatus:(BOOL)open;
/// 告诉 h5 现在开始上课,h5 会清空画板
/// @param jsonDict 开始推流时发送的 socket 消息
- (void)setSliceStart:(id)jsonDict;
/// 切换 ppt 或白板
/// 如果切换的是文档,切换成功后触发回调 '-jsbridge_documentChangeWithAutoId:imageUrls:fileName:'
/// @param autoId 切换的文档的 autoId,如果是白板 autoId 为 0
/// @param pageNumber 切换到文档的第几页,-1 表示打开上次展示的页面
- (void)changePPTWithAutoId:(NSUInteger)autoId pageNumber:(NSInteger)pageNumber;
/// 设置画笔类型
/// @param type line - 自由笔;text - 文字;arrowLine - 箭头
- (void)setDrawType:(PLVWebViewBrushPenType)type;
/// 修改画笔颜色
/// @param hexString RGB色值,如红色为“#FF0000”
- (void)changeColor:(NSString *)hexString;
/// 执行撤回画板操作
- (void)doUndo;
/// 进入画笔删除状态
- (void)toDelete;
/// 删除所有画笔
- (void)deleteAllPaint;
/// 完成文本输入
- (void)changeTextContent:(NSString *)content;
/// 重置 白板或PPT 缩放比例为 100%
- (void)resetWhiteboardPPTZoomRatio;
#pragma mark - Register JS Method
/// 注册 'sendSocketEvent' 方法
/// 用于把 h5 接收到的操作画板产生的数据,通过 socket 发送给聊天室
/// 用于开播场景时,开始推流才需要发送 h5 画板数据到聊天室
/// 配合回调 '-jsbridge_sendSocketEventWithJson:' 使用
- (void)registerSocketEventFunction;
#pragma mark 观看专用方法
/// 注册 'pptPrepare' 方法
/// 【回放时】用于PPT视图准备完毕时接收到通知
/// 配合回调 '-jsbridge_PPTHadPrepare' 使用
- (void)registerPPTPrepareFunction;
/// 注册 'videoDuration' 方法
/// 用于PPT视图需要获取视频回放播放器当前播放时间点时接收到通知
/// 配合回调 '-jsbridge_getCurrentPlaybackTime' 使用
- (void)registerVideoDurationFunction;
/// 注册 'changePPTPosition' 方法
/// 用于讲师发起PPT位置切换时接收到通知
/// 配合回调 '-jsbridge_changePPTPosition:' 使用
- (void)registerChangePPTPositionFunction;
/// 注册 'pptStatusChange' 方法
/// @note 用于观看端文档翻页时接收到通知
/// 配合回调 '-jsbridge_pageStatusChangeWithAutoId:pageNumber:totalPage:pptStep:maxNextNumber:' 使用
- (void)registerWatchPPTStatusChangeFunction;
#pragma mark 推流专用方法
/// 注册 'pptStatusChange' 方法
/// 用于文档翻页时接收到通知
/// 配合回调 '-jsbridge_pageStatusChangeWithAutoId:pageNumber:totalPage:pptStep:' 使用
- (void)registerPPTStatusChangeFunction;
/// 注册 'toEditText' 方法
/// 用于 webView 上准备输入文字时调用
/// 配合回调 '-jsbridge_documentInputWithText:textColor:' 使用
- (void)registerPPTInputFunction;
/// 注册 'whiteImages' 方法
/// 用于 webView 上白板预览图更新时调用
/// 配合回调 '-jsbridge_updateWhiteboardImageData:pageNumber:' 使用
- (void)registerWhiteImagesFunction;
/// 注册 'pptThumbnail'方法(续播后,需要同步该ppt的缩略图和文件名称)
/// 用于 恢复上场直播后 同步ppt缩略图
/// 配合回调 '-jsbridge_documentChangeWithAutoId:imageUrls:fileName:' 使用
- (void)registerPPTThumbnailFunction;
/// 注册 'zoomChange' 方法
/// 用于 webView 上白板或PPT尺寸缩放更新时调用
/// 配合回调 '-jsbridge_updateWhiteboardPPTZoomRatio:' 使用
- (void)registerWhiteboardPPTZoomChangeFunction;
/// 注销 'pptThumbnail'方法
- (void)removePPTThumbnailFunction;
@end
Swift
class PLVWebViewBridge : NSObject
Undocumented
-
Undocumented
Declaration
Objective-C
@property (nonatomic, weak) id<PLVWebViewBridgeProtocol> delegate
Swift
weak var delegate: PLVWebViewBridgeProtocol? { get set }
-
Undocumented
Declaration
Objective-C
+ (instancetype)bridgeWithWebview:(WKWebView *)webView webviewDelegate:(id<WKNavigationDelegate>)webViewDelegate;
Swift
convenience init(webview webView: WKWebView, webviewDelegate webViewDelegate: WKNavigationDelegate)
-
Undocumented
Declaration
Objective-C
+ (instancetype)bridgeWithWebview:(WKWebView *)webView;
Swift
convenience init(webview webView: WKWebView)
-
Undocumented
Declaration
Objective-C
- (void)setWebViewDelegate:(id<WKNavigationDelegate> __nullable)webViewDelegate;
Swift
func setWebViewDelegate(_ webViewDelegate: WKNavigationDelegate?)
-
设置用户信息
Declaration
Objective-C
- (void)setUserInfo:(nonnull NSDictionary *)userDict;
Swift
func setUserInfo(_ userDict: [AnyHashable : Any])
Parameters
userDict
socket 用户登录信息
-
白板、PPT内部翻页
Note
区别‘changePPTWithAutoId:pageNumber:',不可用于白板与PPT之间的切换,或打开新的白板或PPTDeclaration
Objective-C
- (void)changePPTPageWithType:(PLVChangePPTPageType)type;
Swift
func changePPTPage(with type: PLVChangePPTPageType)
Parameters
type
翻页类型
-
刷新PPT内容
Declaration
Objective-C
- (void)refreshPPTWithJsonObject:(nonnull NSDictionary *)jsonObject delay:(NSUInteger)delay;
Swift
func refreshPPT(withJsonObject jsonObject: [AnyHashable : Any], delay: UInt)
Parameters
jsonObject
PPT内容
delay
延迟时间 (单位毫秒)
-
【观看回放时】设置本地ppt路径
Declaration
Objective-C
- (void)pptSetLocalPath:(nonnull NSString *)path;
Swift
func pptSetLocalPath(_ path: String)
Parameters
path
ppt路径
-
Undocumented
Declaration
Objective-C
- (void)pptLocalStartWithVideoId:(NSString *)videoId vid:(NSString *)vid;
Swift
func pptLocalStart(withVideoId videoId: String, vid: String)
-
设置视频SEI信息
Declaration
Objective-C
- (void)setSEIData:(long)newTimeStamp;
Swift
func setSEIData(_ newTimeStamp: Int)
Parameters
newTimeStamp
时间戳信息
-
Deprecated
已废弃,请使用pptStartWithVideoId:roomId:
加载回放PPT
Declaration
Objective-C
- (void)pptStartWithVid:(nonnull NSString *)vid;
Swift
func pptStart(withVid vid: String)
Parameters
vid
回放视频的vid
-
【观看回放时】加载回放PPT
Declaration
Objective-C
- (void)pptStartWithVideoId:(nonnull NSString *)videoId channelId:(nonnull NSString *)channelId;
Swift
func pptStart(withVideoId videoId: String, channelId: String)
Parameters
videoId
回放视频的videoId(请求'直播回放视频的信息‘接口返回的视频Id,与后台回放列表看到的vid不是同一个数据)
channelId
频道Id
-
【观看暂存时】加载暂存PPT
Declaration
Objective-C
- (void)pptStartWithFileId:(nonnull NSString *)fileId channelId:(nonnull NSString *)channelId;
Swift
func pptStart(withFileId fileId: String, channelId: String)
Parameters
fileId
暂存视频的fileId
channelId
频道Id
-
设置或取消画笔权限
Declaration
Objective-C
- (void)setPaintPermission:(nonnull NSString *)userType;
Swift
func setPaintPermission(_ userType: String)
Parameters
userType
用户权限, speaker 代表控制ppt权限+画笔权限
-
设置画板是否处于可绘制状态
Declaration
Objective-C
- (void)setPaintStatus:(BOOL)open;
Swift
func setPaintStatus(_ open: Bool)
Parameters
open
打开或关闭画板
-
告诉 h5 现在开始上课,h5 会清空画板
Declaration
Objective-C
- (void)setSliceStart:(nonnull id)jsonDict;
Swift
func setSliceStart(_ jsonDict: Any)
Parameters
jsonDict
开始推流时发送的 socket 消息
-
切换 ppt 或白板 如果切换的是文档,切换成功后触发回调 ‘-jsbridge_documentChangeWithAutoId:imageUrls:fileName:’
Declaration
Objective-C
- (void)changePPTWithAutoId:(NSUInteger)autoId pageNumber:(NSInteger)pageNumber;
Swift
func changePPT(withAutoId autoId: UInt, pageNumber: Int)
Parameters
autoId
切换的文档的 autoId,如果是白板 autoId 为 0
pageNumber
切换到文档的第几页,-1 表示打开上次展示的页面
-
设置画笔类型
Declaration
Objective-C
- (void)setDrawType:(PLVWebViewBrushPenType)type;
Swift
func setDraw(_ type: PLVWebViewBrushPenType)
Parameters
type
line - 自由笔;text - 文字;arrowLine - 箭头
-
修改画笔颜色
Declaration
Objective-C
- (void)changeColor:(nonnull NSString *)hexString;
Swift
func changeColor(_ hexString: String)
Parameters
hexString
RGB色值,如红色为“#FF0000”
-
执行撤回画板操作
Declaration
Objective-C
- (void)doUndo;
Swift
func doUndo()
-
进入画笔删除状态
Declaration
Objective-C
- (void)toDelete;
Swift
func toDelete()
-
删除所有画笔
Declaration
Objective-C
- (void)deleteAllPaint;
Swift
func deleteAllPaint()
-
完成文本输入
Declaration
Objective-C
- (void)changeTextContent:(nonnull NSString *)content;
Swift
func changeTextContent(_ content: String)
-
重置 白板或PPT 缩放比例为 100%
Declaration
Objective-C
- (void)resetWhiteboardPPTZoomRatio;
Swift
func resetWhiteboardPPTZoomRatio()
-
注册 ‘sendSocketEvent’ 方法 用于把 h5 接收到的操作画板产生的数据,通过 socket 发送给聊天室 用于开播场景时,开始推流才需要发送 h5 画板数据到聊天室 配合回调 ‘-jsbridge_sendSocketEventWithJson:’ 使用
Declaration
Objective-C
- (void)registerSocketEventFunction;
Swift
func registerSocketEventFunction()
-
注册 ‘pptPrepare’ 方法 【回放时】用于PPT视图准备完毕时接收到通知 配合回调 ‘-jsbridge_PPTHadPrepare’ 使用
Declaration
Objective-C
- (void)registerPPTPrepareFunction;
Swift
func registerPPTPrepareFunction()
-
注册 ‘videoDuration’ 方法 用于PPT视图需要获取视频回放播放器当前播放时间点时接收到通知 配合回调 ‘-jsbridge_getCurrentPlaybackTime’ 使用
Declaration
Objective-C
- (void)registerVideoDurationFunction;
Swift
func registerVideoDurationFunction()
-
注册 ‘changePPTPosition’ 方法 用于讲师发起PPT位置切换时接收到通知 配合回调 ‘-jsbridge_changePPTPosition:’ 使用
Declaration
Objective-C
- (void)registerChangePPTPositionFunction;
Swift
func registerChangePPTPositionFunction()
-
注册 ‘pptStatusChange’ 方法
Note
用于观看端文档翻页时接收到通知 配合回调 ‘-jsbridge_pageStatusChangeWithAutoId:pageNumber:totalPage:pptStep:maxNextNumber:’ 使用Declaration
Objective-C
- (void)registerWatchPPTStatusChangeFunction;
Swift
func registerWatchPPTStatusChangeFunction()
-
注册 ‘pptStatusChange’ 方法 用于文档翻页时接收到通知 配合回调 ‘-jsbridge_pageStatusChangeWithAutoId:pageNumber:totalPage:pptStep:’ 使用
Declaration
Objective-C
- (void)registerPPTStatusChangeFunction;
Swift
func registerPPTStatusChangeFunction()
-
注册 ‘toEditText’ 方法 用于 webView 上准备输入文字时调用 配合回调 ‘-jsbridge_documentInputWithText:textColor:’ 使用
Declaration
Objective-C
- (void)registerPPTInputFunction;
Swift
func registerPPTInputFunction()
-
注册 ‘whiteImages’ 方法 用于 webView 上白板预览图更新时调用 配合回调 ‘-jsbridge_updateWhiteboardImageData:pageNumber:’ 使用
Declaration
Objective-C
- (void)registerWhiteImagesFunction;
Swift
func registerWhiteImagesFunction()
-
注册 ‘pptThumbnail'方法(续播后,需要同步该ppt的缩略图和文件名称) 用于 恢复上场直播后 同步ppt缩略图 配合回调 ’-jsbridge_documentChangeWithAutoId:imageUrls:fileName:‘ 使用
Declaration
Objective-C
- (void)registerPPTThumbnailFunction;
Swift
func registerPPTThumbnailFunction()
-
注册 ‘zoomChange’ 方法 用于 webView 上白板或PPT尺寸缩放更新时调用 配合回调 ‘-jsbridge_updateWhiteboardPPTZoomRatio:’ 使用
Declaration
Objective-C
- (void)registerWhiteboardPPTZoomChangeFunction;
Swift
func registerWhiteboardPPTZoomChangeFunction()
-
注销 ‘pptThumbnail'方法
Declaration
Objective-C
- (void)removePPTThumbnailFunction;
Swift
func removePPTThumbnailFunction()