我的目标:在应用程序中断期间继续进行网络会话(例如,读取的传入短信)。
方法A: 我试图在NSUserDefaults中存储UIWebView的内容,如下所示:
NSData *webViewData = [NSKeyedArchiver archivedDataWithRootObject:webView];
[[NSUserDefaults standardUserDefaults] setObject:webViewData forKey:kDefaultsWebViewObjectKey];
然后将其恢复为:
NSData *dta = [[NSUserDefaults standardUserDefaults] objectForKey:kDefaultsWebViewObjectKey];
webView = [NSKeyedUnarchiver unarchiveObjectWithData:dta];
但不包括内容。
方法B: 我也试过用以下内容获取UIWebView的内容:
NSString *content = [webView stringByEvaluatingJavaScriptFromString:@"document.body.innerHTML;"];
然后存储它,然后再次检索它,然后尝试在UIWebView中设置它:
- (void)loadData:(NSData *)data MIMEType:(NSString *)MIMEType textEncodingName:(NSString *)encodingName baseURL:(NSURL *)baseURL
但是innerHTML javascript没有返回整个内容。
任何想法,建议等?
答案 0 :(得分:1)
我最终使用NSURLRequests,然后将检索到的HTTP正文和cookie存储到NSUserDefaults。
重新进入应用程序后,我阅读了这些内容并在UIWebView和NSHTTPCookieStorage中再次设置它们,然后清除这些密钥的NSUserDefaults。
答案 1 :(得分:0)
如果您的文档没有引用任何资源(或明确地这样做),您应该能够恢复outerHTML:
NSString *content = [webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.outerHTML;"];
为了获得最流畅的体验,您还必须恢复滚动和缩放属性,并在加载webview时显示缓存的表示