swift版本 WKWebview 实现jsbridge
时间: 2024-05-12 17:15:40 浏览: 173
实现 JSBridge 的关键是在原生的 WKWebView 中添加 JavaScript,使之能够被调用并处理传递的数据。以下是一个简单的 Swift 版本的实现:
1. 在原生代码中添加 JavaScript
```swift
// WKWebView 初始化
let webView = WKWebView(frame: .zero, configuration: WKWebViewConfiguration())
// 注入 JavaScript 脚本
let jsScript = "window.webkit.messageHandlers.jsBridge.postMessage"
let userScript = WKUserScript(source: jsScript, injectionTime: .atDocumentEnd, forMainFrameOnly: false)
webView.configuration.userContentController.addUserScript(userScript)
// 添加消息处理器
webView.configuration.userContentController.add(self, name: "jsBridge")
```
2. 实现 WKScriptMessageHandler 协议
使用 WKScriptMessageHandler 协议来接收从 JavaScript 中传递的消息。在 Swift 中,需要使用 `@objc` 来声明方法。
```swift
extension ViewController: WKScriptMessageHandler {
func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
if message.name == "jsBridge" {
// 处理传递的数据
let data = message.body as? [String: Any]
// ...
}
}
}
```
3. 在 JavaScript 中实现调用
在 JavaScript 中使用 `window.webkit.messageHandlers.jsBridge.postMessage(data)` 来将数据传递给原生代码。以下是一个示例:
```javascript
// 发送数据给原生代码
window.webkit.messageHandlers.jsBridge.postMessage({
action: "showAlert",
data: {
message: "Hello from JavaScript!"
}
});
```
通过以上步骤,就可以在 Swift 中实现一个简单的 JSBridge。
阅读全文