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?)

Call JS Method

  • 设置用户信息

    Declaration

    Objective-C

    - (void)setUserInfo:(nonnull NSDictionary *)userDict;

    Swift

    func setUserInfo(_ userDict: [AnyHashable : Any])

    Parameters

    userDict

    socket 用户登录信息

  • 白板、PPT内部翻页

    Note

    区别‘changePPTWithAutoId:pageNumber:',不可用于白板与PPT之间的切换,或打开新的白板或PPT

    Declaration

    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()

Register JS Method

  • 注册 ‘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()