Domanda

Il mio obiettivo: continuare una sessione Web attraverso un'interruzione app (ad esempio SMS in arrivo che viene letta.)

.

Approccio A: Ho cercato di memorizzare il contenuto di un UIWebView in NSUserDefaults, in questo modo:

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

e quindi ripristinare le cose come:

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

, ma che non include il contenuto.

Approccio B: Ho anche provato ottenere i contenuti del UIWebView con:

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

poi riporlo, e il recupero di nuovo, e poi cercando di impostarlo nel UIWebView con:

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

, ma il javascript innerHTML non restituisce l'intero contenuto.

Tutte le idee, suggerimenti, ecc.?

È stato utile?

Soluzione

Ho finito per usare NSURLRequests, e quindi la conservazione del corpo HTTP recuperato e biscotti a NSUserDefaults.

Dopo il rientro al app che ho letto questi e impostare di nuovo su un UIWebView e nel NSHTTPCookieStorage, e quindi cancellare i NSUserDefaults per queste chiavi.

Altri suggerimenti

Se il documento non fa riferimento a tutte le risorse (o lo fa in modo così esplicito), si dovrebbe essere in grado di ripristinare l'outerHTML:

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

Per l'esperienza più regolare si dovrà ripristinare anche le proprietà di scorrimento e di zoom e mostra una rappresentazione nascosta mentre il WebView sta caricando

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top