UIWebView incl. codificação dos conteúdos / descodificação
Pergunta
O meu objectivo: (. Por exemplo SMS de entrada que é lido). Para continuar uma sessão de web através de uma interrupção aplicativo
Abordagem A: Tentei guardar o conteúdo de um UIWebView em NSUserDefaults, como este:
NSData *webViewData = [NSKeyedArchiver archivedDataWithRootObject:webView];
[[NSUserDefaults standardUserDefaults] setObject:webViewData forKey:kDefaultsWebViewObjectKey];
e, em seguida, restaurá-lo como:
NSData *dta = [[NSUserDefaults standardUserDefaults] objectForKey:kDefaultsWebViewObjectKey];
webView = [NSKeyedUnarchiver unarchiveObjectWithData:dta];
mas que não inclui o conteúdo.
Abordagem B: Eu também tentei obter o conteúdo do UIWebView com:
NSString *content = [webView stringByEvaluatingJavaScriptFromString:@"document.body.innerHTML;"];
, em seguida, armazená-lo e recuperá-lo novamente, e, em seguida, tentando defini-la no UIWebView com:
- (void)loadData:(NSData *)data MIMEType:(NSString *)MIMEType textEncodingName:(NSString *)encodingName baseURL:(NSURL *)baseURL
mas o javascript innerHTML é não retornando todo o conteúdo.
Todas as ideias, sugestões, etc.?
Solução
Acabei usando NSURLRequests, e depois armazenar o corpo HTTP recuperados e cookies para NSUserDefaults.
Após a re-entrada para o aplicativo que eu li estes e colocá-los novamente em um UIWebView e na NSHTTPCookieStorage, e, em seguida, limpar os NSUserDefaults para essas chaves.
Outras dicas
Se o documento não faz referência a quaisquer recursos (ou fá-lo explicitamente), você deve ser capaz de restaurar o outerHTML:
NSString *content = [webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.outerHTML;"];
Para a experiência mais suave você terá que também restaurar a rolagem e zoom propriedades e mostrar uma representação em cache enquanto o webview é carregamento