Frage

Ihr Ziel: eine Web-Sitzung über eine App Unterbrechung fortgesetzt (zB eingehende SMS, die gelesen wird.)

.

Ansatz A: Ich habe versucht, den Inhalt einer UIWebView in NSUserDefaults zu speichern, wie folgt aus:

NSData *webViewData = [NSKeyedArchiver archivedDataWithRootObject:webView];
[[NSUserDefaults standardUserDefaults] setObject:webViewData forKey:kDefaultsWebViewObjectKey];

und dann wiederherstellen es mögen:

NSData *dta = [[NSUserDefaults standardUserDefaults] objectForKey:kDefaultsWebViewObjectKey];
webView = [NSKeyedUnarchiver unarchiveObjectWithData:dta];

, aber das schließt nicht den Inhalt.

Ansatz B: Ich habe auch versucht, den Inhalt der UIWebView immer mit:

NSString *content = [webView stringByEvaluatingJavaScriptFromString:@"document.body.innerHTML;"];

Speichern Sie es dann, und wieder abrufen, und dann zu setzen versuchen, es in der UIWebView mit:

- (void)loadData:(NSData *)data MIMEType:(NSString *)MIMEType textEncodingName:(NSString *)encodingName baseURL:(NSURL *)baseURL

aber die innerHTML- JavaScript ist nicht den ganzen Inhalt zurück.

Alle Ideen, Anregungen, etc.?

War es hilfreich?

Lösung

landete ich mit NSURLRequests, und dann die abgerufene HTTP Körper und Cookies NSUserDefaults speichern.

Nach dem Wiedereintritt in die App las ich diese und setzen sie wieder auf einem UIWebView und im NSHTTPCookieStorage und dann für diese Tasten die NSUserDefaults löschen.

Andere Tipps

Wenn Sie Ihr Dokument verweisen keine Ressourcen (oder nicht so explizit), sollten Sie in der Lage sein, die Outerhtml wiederherzustellen:

NSString *content = [webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.outerHTML;"];

Für die reibungslose Erfahrung werden Sie müssen auch die Scroll- und Zoom-Eigenschaften wiederherzustellen und eine im Cache gespeicherte Darstellung zeigen, während die Webansicht geladen wird

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top