Robię aplikację Hybrid IOS przy użyciu Swift i HTML / JavaScript. W Androidzie mogę używać Web Widok:

 WebSettings settings = web view.getSettings();
 settings.setJavaScriptEnabled(true);
 webView.addJavascriptInterface(this,"Book");
webView.loadUrl("http://example.com/test.html");

Publiczne void Back () {....}

I w Test.html jest JavaScript po kliknięciu przycisku uruchomić kod JavaScript: Book.Back (); Więc kontrola przejdzie z JavaScript na Androida, aby uruchomić funkcję z powrotem (). Jak mogę zrobić coś podobnego w 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)
0
Antonio Abrantes 19 marzec 2020, 05:56

1 odpowiedź

Najlepsza odpowiedź

Cześć Korzystaj z poniższego kodu. Tutaj poniższy kod nadal szukają wiadomości z JavaScript, a konkretnie dla "PaymentHandler"

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)")

}

}
0
Yogesh Tandel 19 marzec 2020, 05:13