Ben WKWebView
yerine UIWebView
kullanarak bakarak öneririm. Ardından, özel URL şemasını kaydetmeniz gerekmeyecek. Ayrıca, UIWebView eski ve WKWebView, ayrı bir işlemde çalışırken, özellikle performans ve işleme gibi birçok avantajı vardır. Elma dokümantasyon ve tavsiyeye
Link> Uygulamada web içeriği eklemek için WKWebView kullanın iOS 8.0 ve OS X 10.10'da başlayan WKWebView
Önemli
https://developer.apple.com/reference/webkit/wkwebview/ kullanmak. UIWebView veya WebView kullanmayın.
import WebKit
class ViewController: UIViewController, WKScriptMessageHandler {
var webView: WKWebView?
override func loadView() {
super.loadView()
webView = WKWebView(frame: self.view.frame)
webView?.configuration.userContentController.add(self, name: "scriptHandler")
self.view.addSubview(webView!)
}
public func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
print("Message received: \(message.name) with body: \(message.body)")
}
// rest of code
}
Sonra javascript kodunda, diyoruz: Ben güçlendirir kütüphane yazdım
window.webkit.messageHandlers["scriptHandler"].postMessage("hello");
söyledi
, bu javascript köprüye bir yerli kurulumu çok basit Bu ve bazı süslü javascript sözdizimi ekler. https://github.com/tmarkovski/BridgeCommander
sadece proje başvurmak, kullanmak (veya Xcode projesine hızlı ve javascript dosyaları eklemek) ve aramak için
webView = WKWebView(frame: self.view.frame)
let commander = SwiftBridgeCommander(webView!)
commander.add("echo") {
command in
command.send(args: "You said: \(command.args)")
}
Daha sonra, bu
gibi javascript geri arama sözdizimi kullanmak mümkün olacak
var commander = new SwiftBridgeCommander();
commander.call("echo", "Hello", function(args) {
// success callback
}, function(error) {
// error callback
});
wkwebview kullanıyordum, ancak wkwebview ölü uçlara yol açabilir. Çerezin nshttpcookiestrorage – Atif
Yup ile senkronize edilmemesi gibi, bu WKWebView'ın bir dezavantajıdır. Web motorunu yalıtılmış bir süreçte çalıştırır ve çalışma zamanı belleğinize erişemez. –
WKWebView ile tanımlama bilgisi yönetimi için WKWebsiteDataStore belgelerini denetleyin - https://developer.apple.com/documentation/webkit/wkwebsitedatastore –