WebView 间通信
publish(eventKey, data, targetWebviewId)
Section titled “publish(eventKey, data, targetWebviewId)”向其他 WebView 发送消息。
// 广播到所有 WebViewSuperSDK.publish('user_login', { userId: '123' });
// 发送到指定 WebViewSuperSDK.publish('refresh_data', { type: 'order' }, 'a1b2c3d4');参数说明:
| 参数 | 类型 | 说明 |
|---|---|---|
| eventKey | string | 事件标识符 |
| data | object | 消息数据 |
| targetWebviewId | string | 目标 WebView ID,省略或传 ’*’ 广播到所有 |
subscribe(eventKey, callback)
Section titled “subscribe(eventKey, callback)”监听来自其他 WebView 或客户端的广播消息。
const unsubscribe = SuperSDK.subscribe('user_login', (data) => { console.log('收到消息:', data);});
// 取消监听unsubscribe();提示:
subscribe既可以接收来自其他 WebView 的publish消息,也可以接收客户端通过sendBroadcast/broadcastToAll发送的广播。
客户端广播(Native → 前端)
Section titled “客户端广播(Native → 前端)”客户端(宿主 App)可以通过 SDK API 向 WebView 发送广播消息,前端使用 subscribe 接收。
客户端调用方式:
// Android - 向当前 WebView 发送广播pageView.sendBroadcast("login_changed", "{\"isLogin\":true}");
// Android - 向所有 WebView 广播SuperSDK.broadcastToAll("config_updated", "{\"key\":\"value\"}");// iOS - 向当前 WebView 发送广播pageView.sendBroadcast(eventKey: "login_changed", jsonData: "{\"isLogin\":true}")
// iOS - 向所有 WebView 广播SuperSDK.broadcastToAll(eventKey: "config_updated", jsonData: "{\"key\":\"value\"}")前端接收方式:
// 监听客户端广播(使用 subscribe,与 WebView 间通信相同)SuperSDK.subscribe('login_changed', (data) => { console.log('登录状态变化:', data); // data = { isLogin: true }});
SuperSDK.subscribe('config_updated', (data) => { console.log('配置更新:', data);});注意: 如果广播在 JSBridge 就绪之前发送,消息会被缓冲,JSBridge 就绪后自动送达。