swift版本 WKWebview 建立与jsbridge
时间: 2024-05-06 07:17:06 浏览: 5
在 Swift 中,使用 WKWebView 建立与 JavaScript 的交互,需要使用 WKScriptMessageHandler 协议,以及 WKUserContentController 类来管理 JS 与 Native 间的消息传递。同时,还需要在 JS 端使用 window.webkit.messageHandlers 对象来发送消息,以及 message.body 获取消息内容。
下面是一个简单的实现步骤:
1. 在 ViewController 中创建一个 WKWebView 对象,并设置其 configuration 属性中的 userContentController 属性,以及添加 WKScriptMessageHandler。
```swift
import UIKit
import WebKit
class ViewController: UIViewController, WKScriptMessageHandler {
var webView: WKWebView!
override func viewDidLoad() {
super.viewDidLoad()
// 创建 WKWebView 对象
let configuration = WKWebViewConfiguration()
let userContentController = WKUserContentController()
// 添加 message handler
userContentController.add(self, name: "myHandler")
configuration.userContentController = userContentController
webView = WKWebView(frame: view.bounds, configuration: configuration)
view.addSubview(webView)
// 加载 HTML 文件
let url = Bundle.main.url(forResource: "index", withExtension: "html")!
webView.loadFileURL(url, allowingReadAccessTo: url)
}
// 实现 WKScriptMessageHandler 协议方法
func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
if message.name == "myHandler" {
print("Received message from JS: \(message.body)")
}
}
}
```
2. 在 JS 端,使用 window.webkit.messageHandlers 对象发送消息。
```javascript
// 发送消息
window.webkit.messageHandlers.myHandler.postMessage("Hello from JS");
// 接收消息
window.addEventListener("message", function(event) {
console.log("Received message from Native:", event.data);
});
```
以上是一个简单的实现步骤,具体的实现还需要根据项目需求进行调整。