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

时间:2019-07-19 10:30:06

标签: ios swift xcode cordova cordova-plugins

我有一个内置于swift 3.0的本机应用程序。现在需要在我们的应用程序中加载一些响应式网页。加载网页后,如果对这些页面采取了任何措施,则需要对本机代码进行一些更改为了显示一些需求。听说过Apache Cordova可以达到此目的。但是没有获得适当的教程来理解该过程。请帮助

1 个答案:

答案 0 :(得分:1)

如果您的方法有所限制并且已知,则可以使用WKWebView的消息处理程序回调从javascript函数进行调用。然后执行一些本机代码,您可以向其发送基本数据。

您需要完成的工作:

let contentController = WKUserContentController()
contentController.add(self, name: "nativeCallbackIOS")

let config = WKWebViewConfiguration()
config.userContentController = contentController

let webView = WKWebView(frame: .zero, configuration: config)

无论是什么“自我”都需要像这样实现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类型是一个明智的主意,因为您可以使用jsonserialization或codable(建议您升级Swift版本)。

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