2026-07-26 19:41:03 +08:00
|
|
|
|
# XWebView Bridge 边界
|
2026-06-15 02:36:11 +08:00
|
|
|
|
|
2026-07-26 19:41:03 +08:00
|
|
|
|
> 最后更新:2026-07-26
|
2026-06-15 02:36:11 +08:00
|
|
|
|
|
2026-07-26 19:41:03 +08:00
|
|
|
|
XWebView 不是业务 JSBridge 协议。它只定义一个通用适配接口:
|
2026-06-15 02:36:11 +08:00
|
|
|
|
|
2026-07-26 19:41:03 +08:00
|
|
|
|
```ts
|
|
|
|
|
|
type XWebViewBridge = {
|
|
|
|
|
|
injectedJavaScriptBeforeContentLoaded?: string
|
|
|
|
|
|
onMessage(raw: string, context: XWebViewBridgePageContext): boolean | Promise<boolean>
|
|
|
|
|
|
onPageClosed?(pageId: string): void
|
|
|
|
|
|
}
|
2026-06-15 02:36:11 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
2026-07-26 19:41:03 +08:00
|
|
|
|
## 页面上下文
|
2026-06-15 02:36:11 +08:00
|
|
|
|
|
2026-07-26 19:41:03 +08:00
|
|
|
|
业务协议实现可以:
|
2026-06-15 02:36:11 +08:00
|
|
|
|
|
2026-07-26 19:41:03 +08:00
|
|
|
|
- 关闭当前页;
|
|
|
|
|
|
- 向当前页执行 JavaScript;
|
|
|
|
|
|
- 判断当前页是否为页面栈顶;
|
|
|
|
|
|
- 取得真实状态栏高度;
|
|
|
|
|
|
- 修改当前页导航栏标题/背景;
|
|
|
|
|
|
- 修改当前页导航栏与状态栏显隐。
|
2026-06-15 02:36:11 +08:00
|
|
|
|
|
2026-07-26 19:41:03 +08:00
|
|
|
|
协议实现不能:
|
2026-06-15 02:36:11 +08:00
|
|
|
|
|
2026-07-26 19:41:03 +08:00
|
|
|
|
- 访问或修改其他 WebView 页面;
|
|
|
|
|
|
- 从 XWebView 读取用户、token、平台、域名或厂商;
|
|
|
|
|
|
- 直接控制宿主导航器;
|
|
|
|
|
|
- 输出原始 Bridge payload;
|
|
|
|
|
|
- 在 common 中注册全局业务 handler。
|
2026-06-15 02:36:11 +08:00
|
|
|
|
|
2026-07-26 19:41:03 +08:00
|
|
|
|
## 消息所有权
|
2026-06-15 02:36:11 +08:00
|
|
|
|
|
2026-07-26 19:41:03 +08:00
|
|
|
|
XWebView 内部只消费 `__xwv` 命名空间:
|
2026-06-15 02:36:11 +08:00
|
|
|
|
|
2026-07-26 19:41:03 +08:00
|
|
|
|
- `download` / `blobdownload` / `bloberror`
|
|
|
|
|
|
- `permission`
|
2026-06-15 02:36:11 +08:00
|
|
|
|
|
2026-07-26 19:41:03 +08:00
|
|
|
|
其他消息先交给 `config.bridge`。Bridge 返回 `false` 时才继续交给
|
|
|
|
|
|
`behavior.onMessage`。Bridge 抛错由 `behavior.onBridgeError` 接收,不产生未处理
|
|
|
|
|
|
Promise。
|
2026-06-15 02:36:11 +08:00
|
|
|
|
|
2026-07-26 19:41:03 +08:00
|
|
|
|
## 业务协议接入
|
2026-06-15 02:36:11 +08:00
|
|
|
|
|
2026-07-26 19:41:03 +08:00
|
|
|
|
业务协议必须在自己的 SDK/插件中维护唯一方法表、请求解析、响应结构、错误码和兼容
|
|
|
|
|
|
测试,然后以 `XWebViewBridge` 适配到容器。XWebView 不提供 `getSession`、`navigate`、
|
|
|
|
|
|
`showToast`、签名、支付或任何假定宿主业务的内置方法。
|
2026-06-15 02:36:11 +08:00
|
|
|
|
|
2026-07-26 19:41:03 +08:00
|
|
|
|
医网信 H5 场景使用 `@szyx/sdk-h5-app/host`;其 V5 线协议不属于
|
|
|
|
|
|
`@xuqm/rn-xwebview` 的公开契约。
|