首页 > 解决方案 > 通过 WKWebView JS 中的 postMessage 处理程序调用 swift 函数

问题描述

我正在尝试在 WKWebView JS 中从 swift 调用一个函数。我正在使用 swift 向 swift 发送消息postMessage。我正在成功接收消息。不知何故,我需要使用正确的参数调用指定的函数。这是我从 JS 发送消息的方式:

window.webkit.messageHandlers.iOSNative.postMessage(message);

我在我的 swiftui 代码中收到它,如下所示:

extension SwiftUiWebView.Coordinator: WKScriptMessageHandler {
    func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
        if message.name == "iOSNative" {
            if let body = message.body as? [String: Any?] {
                print("JSON value received from webView is: \(body)")
            } else if let body = message.body as? String {
                print("String value received from webView is: \(body)")
            }
        }
    }
}

我在调试控制台中成功获得了带有正确消息的打印语句。但是现在我需要根据消息调用特定的函数。如果我们将字符串更改为“myPrintMessageFunc('Hello World!')”,我们可以使用某种类似于 JS 的 eval() 来调用该函数吗?还是有其他方法可以做到这一点(不包括 if else 语句)?

标签: swiftui

解决方案


推荐阅读