Question

Mon but: de poursuivre une session Web à travers une interruption de l'application (par exemple SMS entrant qui est lu.)

.

Approche A: J'ai essayé de stocker le contenu d'un UIWebView dans NSUserDefaults, comme ceci:

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

et puis la restaurer comme:

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

mais qui ne comprend pas le contenu.

Approche B: J'ai aussi essayé d'obtenir le contenu du UIWebView avec:

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

puis le stocker et le récupérer à nouveau, puis essayer de le mettre dans le UIWebView avec:

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

mais le javascript innerHTML ne retourne pas tout le contenu.

Toutes les idées, suggestions, etc.?

Était-ce utile?

La solution

Je fini par utiliser NSURLRequests, puis stocker le corps HTTP récupéré et les cookies pour NSUserDefaults.

Après la rentrée à l'application que je lis ces derniers et les remettre sur un UIWebView et dans le NSHTTPCookieStorage, puis effacer les NSUserDefaults pour ces touches.

Autres conseils

Si votre document ne fait référence à aucune ressource (ou ne le fait explicitement), vous devriez être en mesure de restaurer la outerHTML:

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

Pour l'expérience, vous aurez plus douce également restaurer les propriétés de défilement et de zoom et afficher une représentation en cache tandis que le chargement WebView

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top