Swift iOS Cache WKWebView-Inhalt für die Offline-Ansicht

Wir versuchen, den Inhalt (HTML) von WKWebView in einem dauerhaften Speicher (NSUserDefaults, CoreData oder Festplattendatei) zu speichern. Der Benutzer kann denselben Inhalt sehen, wenn er die Anwendung ohne Internetverbindung erneut betritt. WKWebView verwendet kein NSURLProtocol wie UIWebView (siehe postHie).

Obwohl ich Beiträge gesehen habe, die "Der Offline-Anwendungscache ist in WKWebView nicht aktiviert." (Apple Dev Foren), ich weiß, dass es eine Lösung gibt.

Ich habe von zwei Möglichkeiten erfahren, aber ich konnte sie nicht zum Laufen bringen:

1) Wenn ich eine Website in Safari für Mac öffne und Datei >> Speichern unter wähle, wird im folgenden Bild die folgende Option angezeigt. Für Mac-Apps gibt es [[webView mainFrame] dataSource] webArchive], aber für UIWebView oder WKWebView gibt es keine solche API. Wenn ich jedoch eine .webarchive-Datei in Xcode auf WKWebView lade (wie die, die ich von Mac Safari erhalten habe), wird der Inhalt korrekt angezeigt (HTML, externe Bilder, Videovorschau), wenn keine Internetverbindung besteht. Die .webarchive-Datei ist eigentlich eine plist (Eigenschaftsliste). Ich habe versucht, ein Mac-Framework zu verwenden, das eine .webarchive-Datei erstellt, diese war jedoch unvollständig.

2) Ich habe den HTML-Code in webView gefunden: didFinishNavigation, aber es werden keine externen Bilder, CSS, Javascript gespeichert.

 func webView(webView: WKWebView, didFinishNavigation navigation: WKNavigation!) {

    webView.evaluateJavaScript("document.documentElement.outerHTML.toString()",
        completionHandler: { (html: AnyObject?, error: NSError?) in
            print(html)
    })
}

Wir kämpfen über eine Woche und es ist ein Hauptmerkmal für uns. Jede Idee wird sehr geschätzt.

Vielen Dank

Antworten auf die Frage(8)

Ihre Antwort auf die Frage