如何将数据从javascript发送到swift?
我正在使用swift和HTML/Javascript开发一个iOS混合应用程序。在Android中,我可以使用web view:如何将数据从javascript发送到swift?,javascript,swift,Javascript,Swift,我正在使用swift和HTML/Javascript开发一个iOS混合应用程序。在Android中,我可以使用web view: WebSettings settings = web view.getSettings(); settings.setJavaScriptEnabled(true); webView.addJavascriptInterface(this,"Book"); webView.loadUrl("http://example.com/test.html"); 公众退
WebSettings settings = web view.getSettings();
settings.setJavaScriptEnabled(true);
webView.addJavascriptInterface(this,"Book");
webView.loadUrl("http://example.com/test.html");
公众退票(){
....
}
在test.html中,当您单击一个按钮运行javascript代码时,会出现一个javascript:Book.back();因此,控件将从javascript转到android以运行函数back()。我怎样才能在swift中做类似的事情
import WebKit
....
let url = Bundle.main.url(forResource: "test", withExtension: "html")!
webView.loadFileURL(url, allowingReadAccessTo: url)
let request = URLRequest(url: url)
webView.load(request)
请使用下面的代码。下面的代码一直在寻找来自javascript的消息,特别是“paymentHandler”
您应该使用
WKScriptMessageHandler
将消息从Javascript传递给Swift,在捕获特定消息时,您可以采取相应的操作。比如用CTA作为字符串发送消息或者类似的东西。需要实现的逻辑
import WebKit
class PaymentGateWayViewController: UIViewController,UIWebViewDelegate,WKScriptMessageHandler{
var containerView = UIView()
var webView: WKWebView?
override func loadView() {
super.loadView()
containerView = UIView(frame: self.view.bounds)
self.view.addSubview(containerView)
}
override func viewDidLoad() {
super.viewDidLoad()
let contentController = WKUserContentController();
contentController.add(self,name: "paymentHandler")
let config = WKWebViewConfiguration()
config.userContentController = contentController
self.webView = WKWebView(frame: self.containerView.bounds,configuration: config)
self.view = self.webView!
}
func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
if(message.name == "paymentHandler") {
print("JavaScript is sending a message \(message.body)")
}
}