我的目标:继续web会话跨应用程序的中断(即读例如接收到的SMS。)

<强>方法甲 我试图存储在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没有返回全部内容。

任何意见,建议等。?

有帮助吗?

解决方案

我最终使用NSURLRequests,然后存储检索HTTP主体和cookies来NSUserDefaults的。

重入到应用程序后,我阅读这些和重新设置它们上一个UIWebView和在NSHTTPCookieStorage,然后清除为NSUserDefaults的这些键。

其他提示

如果您的文档不引用任何资源(或不那么明确),你应该能够恢复outerHTML:

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

有关流畅的体验,你将不得不也恢复滚动和缩放性能和显示缓存表示,而web视图加载

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top