Wie die Migration zu WKWebView?
Ich versuche zu verstehen, wie Sie die neue WKWebView in iOS8, können Sie nicht finden viel Informationen. Ich habe gelesen:
http://developer.telerik.com/featured/why-ios-8s-wkwebview-is-a-big-deal-for-hybrid-development/
http://nshipster.com/wkwebkit/
Aber wie wirkt sich das auf die bestehenden apps? Wird eine gewöhnliche UiWebView bekommen, der Beschleunigung, die von der nitro-java-script-engine oder müssen wir Veränderungen vornehmen? Wie gehen wir mit der Abwärtskompatibilität?
Alle den code und die Beispiele, die ich finden kann, sind mittels swift, wird dies zwingend notwendig sein?
Dankbar für jede Hilfe in dieser Angelegenheit!
- Vielleicht wird dies dir helfen: floatlearning.com/2014/12/one-webview-to-rule-them-all
- blog.initlabs.com/post/100113463211/wkwebview-vs-uiwebview
- Schauen Sie auch mal auf meine Antwort hinzufügen, dass es wie eine Untersicht in swift 3.0 stackoverflow.com/a/41205568/2356808
- Dies kann helfen, - stackoverflow.com/questions/46793618/ios-wkwebview-vs-uiwebview
Du musst angemeldet sein, um einen Kommentar abzugeben.
UIWebView
wird noch weiterhin arbeiten Sie mit bestehenden apps.WKWebView
abiOS8
nurWKWebView
hat eine Nitro-JavaScript-engine.Nutzen diese schnellere JavaScript-engine, die in älteren Anwendungen, die Sie haben, um änderungen am code zu verwenden
WKWebView
stattUIWebView
. FüriOS7
und älter sind, haben Sie weiterhin zu verwendenUIWebView
, so können Sie haben zu prüfen, füriOS8
und dann geltenWKWebView
Methoden /Delegaten Methoden und fallback aufUIWebView
Methoden füriOS7
und älter. Es gibt auch keine Interface Builder-Komponente fürWKWebView
(noch) nicht, also muss man programmatisch umsetzenWKWebView
.Können Sie implementieren
WKWebView
in Objective-C, hier ist ein einfaches Beispiel, um zu initiieren eineWKWebView
:WKWebView
rendering-performance ist spürbar in der WebGL-Spiele und etwas läuft, dass komplexe JavaScript-algorithmen, wenn Sie mit webview laden einer einfachen html-oder website können Sie weiterhin verwendenUIWebView
.Hier ist ein test app, die verwendet werden, um öffnen Sie eine beliebige Webseite mit
UIWebView
oderWKWebView
und können Sie die Leistung vergleichen und dann entscheiden, aktualisieren Sie Ihre app zu verwendenWKWebView
:https://itunes.apple.com/app/id928647773?mt=8&at=10ltWQ
NSAppTransportSecurity
mitNSAllowsArbitraryLoads
iminfo.plist
zu arbeiten.Hier ist, wie ich transitioned von UIWebView zu WKWebView.
Stellen Sie sicher, dass Sie importieren WebKit/WebKit.h in deine header-Datei.
Dies ist meine header-Datei:
Hier ist meine Umsetzung-Datei:
NSAppTransportSecurity
mitNSAllowsArbitraryLoads
iminfo.plist
zu arbeiten.Schritt : 1 Import
webkit
imViewController.swift
Schritt : 2 Declare variable von webView.
Schritt : 3 Hinzufügen Delegierter
WKNavigationDelegate
Schritt : 4 Hinzufügen von code in
ViewDidLoad
.Schritt : 5 Bearbeiten Sie die
info.plist
hinzufügenNSAppTransportSecurity
mitNSAllowsArbitraryLoads
iminfo.plist
zu arbeiten.Swift ist nicht erforderlich, alles funktioniert gut mit Objective-C. UIWebView weiterhin unterstützt werden, so dass es keine Eile zu migrieren, wenn Sie wollen, Ihre Zeit zu nehmen. Es wird jedoch nicht die javascript-und Scroll-performance-Verbesserungen von WKWebView.
Für rückwärts Kompatibilität, ich habe zwei Eigenschaften, die für meine view-controller: ein UIWebView und ein WKWebView. Ich benutze die WKWebview nur, wenn die Klasse vorhanden ist:
Während ich verwendet, um eine UIWebViewDelegate, ich machte es auch ein WKNavigationDelegate und erstellt die notwendigen Methoden.
WkWebView ist viel schneller und zuverlässiger als UIWebview nach der Apple-docs.
Hier, ich habe meine WkWebViewController.
WKWebView mit Swift in iOS 8..
Den ganzen ViewController.swift-Datei sieht nun wie folgt aus:
Verwenden einige design patterns, die Sie können mix UIWebView und WKWebView.
Der entscheidende Punkt ist die Gestaltung einer einzigartigen browser-Schnittstelle.
Aber Sie sollten mehr Aufmerksamkeit schenken, um Ihre app, Ihren aktuellen Funktionen,
zum Beispiel: wenn Ihre app mit NSURLProtocol zur Verbesserung der Netzwerk-Fähigkeit, mit WKWebView, haben Sie keine chance, das gleiche zu tun. Da NSURLProtocol nur Effekte, die der aktuelle Prozess, und WKWebView mit muliti-Prozess-Architektur, der Vernetzung der Mitarbeiter wird in einem separaten Prozess.
Verwenden Sie die WKWebView, die verfügbar ist als von iOS8 im Rahmen 'WebKit', um die Beschleunigung.
Wenn Sie brauchen, rückwärts-Kompatibilität, müssen Sie UIWebView für iOS7 und älter.
Habe ich ein wenig code zu liefern, der UIViewController Rahmen für die neue WKWebView. Es kann installiert werden über cocoapods. Schau mal hier:
STKWebKitViewController auf github
Swift 4