在iOS的WKWebView中,可以通过以下方法来处理H5调用原生方法的请求:

  1. 使用WKWebView的configuration.userContentController属性来添加一个名为"handlerName"的ScriptMessageHandler:
let userContentController = WKUserContentController()
userContentController.add(self, name: "handlerName")
let configuration = WKWebViewConfiguration()
configuration.userContentController = userContentController
let webView = WKWebView(frame: .zero, configuration: configuration)
  1. 实现WKScriptMessageHandler协议的方法userContentController(_:didReceive:)来处理H5发送的请求:
extension ViewController: WKScriptMessageHandler {
    func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
        if message.name == "handlerName" {
            // 处理H5调用原生方法的逻辑
            if let body = message.body as? [String: Any] {
                let method = body["method"] as? String
                let parameters = body["parameters"] as? [String: Any]
                // 根据method和parameters来执行相应的原生方法
                // ...
            }
        }
    }
}
  1. 在H5中,可以通过JavaScript来调用原生方法,例如:
window.webkit.messageHandlers.handlerName.postMessage({
    method: "methodName",
    parameters: {
        key1: "value1",
        key2: "value2"
    }
});

上述代码中,handlerName是在第1步中注册的ScriptMessageHandler的名称,methodName是原生方法的名称,parameters是传递给原生方法的参数


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

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