uniapp webview桥接方法
时间: 2024-08-17 10:02:39 浏览: 100
uniapp 使用webView通讯
uniApp 的 Webview 桥接主要是通过 JavaScript 调用原生 API 的方式,实现了前端与后台、Webview 中嵌套的 H5 页面之间的数据交互。以下是常见的 uniApp Webview 桥接方法:
1. **wxBridgeReady**事件:当 uni-app 初始化完成并且 webview 初始化完毕,会触发这个事件。在这个事件中可以设置全局变量 `window.wx`,然后就可以通过这个对象调用原生提供的方法。
```javascript
// 使用 wxBridgeReady 来初始化
Page({
onBridgeReady: function() {
window.wx = this;
// 现在可以调用原生函数
wx.postMessage('Hello Native', 'http://localhost');
},
})
```
2. **postMessage** 和 **onmessage**:JavaScript 在 webview 中使用 `wx.postMessage` 发送消息到原生,原生监听 `onmessage` 接收并处理这些消息。
```javascript
// 在 H5 中发送消息
uni.postMessage('Native Message', '*', '*');
// 在原生中接收并处理消息
wx.onmessage = function(e) {
console.log('Received message:', e.data);
};
```
3. **API暴露**:开发者需要在 uni-app 的 native 层面上将需要跨端使用的 JS 函数打包成 JSON,并通过 `wx.setStorageSync` 存储起来,然后在 H5 中通过 `uni.invokeMethod` 获取并调用。
```cpp
// 在 C++ (原生部分)
void RegisterJSMethods() {
auto ret = registerObjectMethod("bridge", "nativeFunction", YourNativeFunction);
if (!ret) {
LOGE("Register JS method failed");
}
}
// 在 H5 (JavaScript 部分)
uni.invokeMethod({
success(res) {
console.log('Native response:', res);
},
fail(err) {
console.error('Error invoking native function:', err);
},
name: "bridge.nativeFunction",
});
```
阅读全文