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;

#pragma mark 观看专用方法

/// 刷新PPT内容
/// @param jsonObject PPT内容
/// @param delay 延迟时间 (单位毫秒)
- (void)refreshPPTWithJsonObject:(NSDictionary *)jsonObject delay:(NSUInteger)delay;

/// 设置视频SEI信息
/// @param newTimeStamp 时间戳信息
- (void)setSEIData:(long)newTimeStamp;

/// 加载回放PPT
/// @param vid 回放视频的vid
- (void)pptStartWithVid:(NSString *)vid;

#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:'
/// @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)toDelete;

/// 删除所有画笔
- (void)deleteAllPaint;

/// 完成文本输入
- (void)changeTextContent:(NSString *)content;

#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;

#pragma mark 推流专用方法

/// 注册 'pptStatusChange' 方法
/// 用于文档翻页时接收到通知
/// 配合回调 '-jsbridge_pageStatusChangeWithAutoId:pageNumber:totalPage:pptStep:' 使用
- (void)registerPPTStatusChangeFunction;

/// 注册 'toEditText' 方法
/// 用于 webView 上准备输入文字时调用
/// 配合回调 '-jsbridge_documentInputWithText:textColor:' 使用
- (void)registerPPTInputFunction;

/// 注册 'whiteImages' 方法
/// 用于 webView 上白板预览图更新时调用
/// 配合回调 '-jsbridge_updateWhiteboardImageData:pageNumber:' 使用
- (void)registerWhiteImagesFunction;

@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内容

    Declaration

    Objective-C

    - (void)refreshPPTWithJsonObject:(nonnull NSDictionary *)jsonObject
                               delay:(NSUInteger)delay;

    Swift

    func refreshPPT(withJsonObject jsonObject: [AnyHashable : Any], delay: UInt)

    Parameters

    jsonObject

    PPT内容

    delay

    延迟时间 (单位毫秒)

  • 设置视频SEI信息

    Declaration

    Objective-C

    - (void)setSEIData:(long)newTimeStamp;

    Swift

    func setSEIData(_ newTimeStamp: Int)

    Parameters

    newTimeStamp

    时间戳信息

  • 加载回放PPT

    Declaration

    Objective-C

    - (void)pptStartWithVid:(nonnull NSString *)vid;

    Swift

    func pptStart(withVid vid: String)

    Parameters

    vid

    回放视频的vid

推流专用方法

  • 设置或取消画笔权限

    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:’

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

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’ 方法 用于文档翻页时接收到通知 配合回调 ‘-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()