在原生iOS应用程序中集成响应式html网页,并使用Apache Cordova进行通信



我有一个在 swift 3.0 中内置的本机应用程序,现在需要在我们的应用程序中加载一些响应式网页。加载网页后,如果在这些页面上执行任何操作,则需要在我们的本机代码中进行一些更改以显示一些要求。听说阿帕奇科尔多瓦实现这一目标。但是没有得到适当的教程来理解这个过程。请帮忙

如果你的方法有些有限和已知,你可以使用 WKWebView 的消息处理程序回调从 javascript 函数调用。然后执行一些本机代码,您可以将基本数据发送到这些代码。

为此,您需要具备以下条件:

let contentController = WKUserContentController()
contentController.add(self, name: "nativeCallbackIOS")
let config = WKWebViewConfiguration()
config.userContentController = contentController
let webView = WKWebView(frame: .zero, configuration: config)

无论什么是"self"都需要像这样实现WKScriptMessageHandler:

extension ViewController: WKScriptMessageHandler {
    func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
        if message.name == "nativeCallbackIOS" {
            // do your native stuff here
        }
    }
}

在您的网站javascript中,您将这样称呼它:

window.webkit.messageHandlers.nativeCallbackIOS.postMessage()

如果需要传递参数,则需要定义规范,因为 WKScriptMessageHandler 上的 message.body 类型为"Any"。一般来说,json 类型是一个聪明的主意,因为您可以使用 json序列化或可编码(如果您升级 swift 版本,建议使用(。

提示:上面示例中使用的语法是 swift 5,因此方法名称可能会有所不同。

最新更新