H5侧代码:

  1. 引入jsBridge
<script src="jsBridge.js"></script>
  1. 发送消息给原生
if (window.WebViewJavascriptBridge) {
  window.WebViewJavascriptBridge.callHandler('methodName', data, function(responseData) {
    console.log(responseData);
  });
} else {
  document.addEventListener('WebViewJavascriptBridgeReady', function() {
    window.WebViewJavascriptBridge.callHandler('methodName', data, function(responseData) {
      console.log(responseData);
    });
  }, false);
}
  1. 接收原生消息
if (window.WebViewJavascriptBridge) {
  window.WebViewJavascriptBridge.registerHandler('methodName', function(data, responseCallback) {
    console.log(data);
    responseCallback('response data');
  });
} else {
  document.addEventListener('WebViewJavascriptBridgeReady', function() {
    window.WebViewJavascriptBridge.registerHandler('methodName', function(data, responseCallback) {
      console.log(data);
      responseCallback('response data');
    });
  }, false);
}

原生侧代码:

  1. 注册jsBridge
WebView webView = findViewById(R.id.web_view);
WebViewJavascriptBridge.enableLogging();
WebViewJavascriptBridge bridge = new WebViewJavascriptBridge(webView, new MyJavascriptInterface());
bridge.registerHandler("methodName", new BridgeHandler() {
    @Override
    public void handler(String data, CallbackFunction callback) {
        Log.i(TAG, "接收到H5发送的消息:" + data);
        callback.onCallback("response data");
    }
});
  1. 发送消息给H5
bridge.callHandler("methodName", data, new CallbackFunction() {
    @Override
    public void onCallback(String responseData) {
        Log.i(TAG, "接收到H5返回的消息:" + responseData);
    }
});
  1. 实现MyJavascriptInterface
public class MyJavascriptInterface {
    @JavascriptInterface
    public void onBridgeReady() {
        Log.i(TAG, "jsBridge已经准备好");
    }
}
``
利用jsBridge实现H5与原生通信分别给出H5侧和原生侧的具体代码

原文地址: https://www.cveoy.top/t/topic/ewXw 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录