Apple 在WebKit 中提供了一种机制,可以将您的 HTML 中的消息发布到本机:
在您的 HTML 页面中,调用:
window.webkit.messageHandlers.messageHandler.postMessage("Pass your data here...");
其中,messageHandler 是您的 iOS 代码中收到的消息的名称。 "Pass your data here..." 是通过messageHandler 消息传递给iOS 的数据。
在您的 iOS 代码中:
使用 WKUserContentController 的 add(_:name:) 方法添加消息处理程序,如下所示:
webView.configuration.userContentController.add(self, name: "messageHandler")
最后,在您的 ViewController 代码中实现 WKScriptMessageHandler 的 userContentController:didReceiveScriptMessage: 方法,例如:
func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
if message.name == "messageHandler" {
// Your Message handler code goes here...
}
根据 add(_:name:) 方法的 Apple 文档:
添加一个名为 name 的脚本消息处理程序
导致 JavaScript 函数 window.webkit.messageHandlers.name.postMessage(messageBody) 在使用用户内容控制器的所有 Web 视图的所有框架中定义。
Apple Documentation link