문제

내 목표 : 앱 중단 (예 : 읽기 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;"];

가장 부드러운 경험을 위해서는 웹 뷰가로드되는 동안 스크롤 및 줌 속성을 복원하고 캐시 된 표현을 표시해야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top