本页只讲 Android 端怎么把白板嵌进来。板子与频道的对应关系、白板何时被销毁、“谁开了白板”这个状态要怎么同步给其他人(SRTC 不会自动广播),见 电子白板。
1. 白板链接的来源
白板链接由 SRTC 在加入频道成功时下发,通过RTCClientEvent.onJoinSucceed 回调的 whiteBoard 参数返回:
RTCClientEvent(或继承 RTCClientSimpleEvent 只重写需要的方法),在回调里取出链接:
- 链接形如
https://<接口域名>/white-board/?code=<会话凭证>&device_type=2&...。每人的链接不同(code是各自的会话凭证,一次性、连接后失效),但指向同一块板(板子 ID 取频道名)—— 所以别把链接转给别人用。whiteBoard正常不为空:白板首次有人进入时自动创建,无需预先开通;为空说明线路配置异常,此时别打开页面。
2. 如何使用(用 WebView 加载)
2.1 WebView 必需配置
2.2 加载链接(追加控制参数)
加载时在链接后追加控制参数:参数以&拼接,依赖链接本身已带 query(joinChannel回调给的地址已经带了?code=...)。别拼成第二个?,那样后面的参数会被整个吞掉。
这几个参数只是初始状态。会中要改(收放工具栏、收回或放开画笔权限)请调 3.4 的 JS 方法,改 URL 不重新加载是不生效的。
2.3 注入 JS Bridge
白板通过一个固定名为AndroidInterface 的 JS 接口与原生通信,必须在加载前注入:
2.4 释放
页面销毁时释放 WebView:3. 交互事件与指令
交互分四类:① 原生 → 白板(URL 参数,只定初值)、② 白板 → 原生(JS Bridge)、③ 白板对 WebView 系统能力的调用、④ 原生 → 白板(会中动态控制的 JS 方法)。3.1 原生 → 白板:URL 控制参数
加载时通过 URL query 传入(见 2.2),用于控制白板 UI:3.2 白板 → 原生:JS Bridge 事件
接口对象名固定为AndroidInterface,白板侧调用方式为 window.AndroidInterface.<方法>(...)。
onExportImage 保存图片的参考实现:
3.3 白板对 WebView 系统能力的调用
白板”插入图片""上传图片”等功能会触发 WebView 的系统回调,需在WebChromeClient 中处理:
提示:白板对图片有大小限制,建议接入方在回传前对图片做压缩(例如压到 1MB 以内),避免过大图片上传失败。
3.4 原生 → 白板:会中动态控制
URL 参数只在打开那一刻生效。会中要收放 UI、收回或放开画笔权限,用evaluateJavascript 调白板挂在 window 上的方法:
藏 UI 不等于禁止操作:setShowMenu/setShowToolUi只是把界面藏起来,用户仍能用快捷键和右键菜单画。要”这个人不能画”只能用setReadonly。
多页白板的跟随规则是”能画的人翻页、其他人跟着翻”,只读端只跟随不广播,详见 SRTC · 电子白板 · 多页白板。宿主不需要指定谁是主持人。