iOS 与 JS 的交互主要通过 WKWebView
实现。
基础概念:
WKWebView
是苹果在 iOS 8 中引入的一个用于在 iOS 应用中显示网页内容的控件。
相关优势:
UIWebView
资源消耗更少。类型:
WKScriptMessageHandler
协议实现。evaluateJavaScript
方法。应用场景:
示例代码:
JavaScript 调用 iOS 方法:
import WebKit
class ViewController: UIViewController, WKScriptMessageHandler {
override func viewDidLoad() {
super.viewDidLoad()
let webViewConfiguration = WKWebViewConfiguration()
let userContentController = WKUserContentController()
userContentController.add(self, name: "nativeHandler")
webViewConfiguration.userContentController = userContentController
let webView = WKWebView(frame: self.view.frame, configuration: webViewConfiguration)
self.view.addSubview(webView)
if let url = URL(string: "https://your-web-page.com") {
let request = URLRequest(url: url)
webView.load(request)
}
}
func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
if message.name == "nativeHandler", let messageBody = message.body as? String {
print("Received message from JavaScript: \(messageBody)")
}
}
}
对应的 JavaScript 代码:
window.webkit.messageHandlers.nativeHandler.postMessage('Hello from JavaScript');
iOS 调用 JavaScript 方法:
webView.evaluateJavaScript("document.title") { (result, error) in
if let title = result as? String {
print("Page title: \(title)")
}
}
常见问题及解决方法:
WKWebView
的配置是否正确,包括 WKScriptMessageHandler
的注册名称是否匹配。领取专属 10元无门槛券
手把手带您无忧上云