跳转到内容

WebView 间通信

向其他 WebView 发送消息。

// 广播到所有 WebView
SuperSDK.publish('user_login', { userId: '123' });
// 发送到指定 WebView
SuperSDK.publish('refresh_data', { type: 'order' }, 'a1b2c3d4');

参数说明:

参数类型说明
eventKeystring事件标识符
dataobject消息数据
targetWebviewIdstring目标 WebView ID,省略或传 ’*’ 广播到所有

监听来自其他 WebView 或客户端的广播消息。

const unsubscribe = SuperSDK.subscribe('user_login', (data) => {
console.log('收到消息:', data);
});
// 取消监听
unsubscribe();

提示: subscribe 既可以接收来自其他 WebView 的 publish 消息,也可以接收客户端通过 sendBroadcast / broadcastToAll 发送的广播。

客户端(宿主 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 就绪后自动送达。