Uiwebview 포함 콘텐츠 인코딩/디코딩
문제
내 목표 : 앱 중단 (예 : 읽기 SMS)에서 웹 세션을 계속합니다.
접근 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가 전체 내용을 반환하지 않습니다.
아이디어, 제안 등이 있습니까?
해결책
나는 nsurlrequests를 사용하여 검색된 HTTP 본체와 쿠키를 nsuserDefaults에 저장했습니다.
앱에 재입국 후 나는 이것들을 읽고 Uiwebview와 nshttpcookiestorage에 다시 설정 한 다음이 키에 대한 nsuserDefaults를 지우는 것입니다.
다른 팁
문서가 리소스를 참조하지 않으면 (또는 명시 적으로) outerhtml을 복원 할 수 있어야합니다.
NSString *content = [webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.outerHTML;"];
가장 부드러운 경험을 위해서는 웹 뷰가로드되는 동안 스크롤 및 줌 속성을 복원하고 캐시 된 표현을 표시해야합니다.
제휴하지 않습니다 StackOverflow