繁体   English   中英

如何收听 Swift 的 JavaScript 回调?

[英]How to Listen to JavaScript CallBack from Swift?

我正在我的 iOS 应用程序中实现 MPGS webView 以在WKWebView上付款,后端开发人员在 myHandler ZA8CFDE6331BD4BEB2666 上向我发送 javascript 回调

我应该收到那个处理程序,它带有许多成功或失败的回调或取消(当用户单击 webview 中的取消按钮时触发),在 JS 中它看起来像这样:

window.webkit.MyHandler.postMessage('cancel');
window.MyHandler.cancelCallback();

我使用以下方法实现接收该回调:

override func viewDidLoad() {
    super.viewDidLoad()
    let contentController = WKUserContentController()
    contentController.add(self, name: "MyHandler")
    let configuration = WKWebViewConfiguration()
    configuration.userContentController = contentController
    configuration.preferences = WKPreferences()
    configuration.preferences.javaScriptEnabled = true
    let url = URL(string: NetworkManager.mpgsBaseUrl + "/" + (MPGSWebView.url ?? ""))!
    let urlRequest = URLRequest(url: url)
    wkWebView = WKWebView(frame: .zero,configuration: configuration)
    wkWebView.navigationDelegate = self
    wkWebView.uiDelegate = self
    wkWebView.load(urlRequest)
    delegate = self.checkOutViewController
    view = wkWebView
}

WKWebview已加载,但当我完成或取消WKScriptMessageHandler委托中的 webview 打印语句从未执行时,我没有收到任何事件:

func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
    print(message.name,"fff",message)
}

如果有人知道如何接收这些事件,我将不胜感激。 此致

您可以尝试(缺少.messageHandlers.

window.webkit.messageHandlers.MyHandler.postMessage("cancel");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM