1

私の目的は、アプリの中断(たとえば、読み取られる着信SMS)を超えてWebセッションを継続することです。

アプローチA: 次のようにUIWebViewのコンテンツをNSUserDefaultsに保存しようとしました。

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

しかし、innerHTMLjavascriptはコンテンツ全体を返していません。

アイデア、提案などはありますか?

4

2 に答える 2

1

最終的にNSURLRequestsを使用し、取得したHTTPボディとCookieをNSUserDefaultsに保存しました。

アプリに再入力した後、これらを読み、UIWebViewとNSHTTPCookieStorageに再度設定してから、これらのキーのNSUserDefaultsをクリアします。

于 2009-06-01T05:17:20.517 に答える
0

ドキュメントがリソースを参照していない(または明示的に参照している)場合は、outerHTMLを復元できるはずです。

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

最もスムーズなエクスペリエンスを得るには、スクロールとズームのプロパティを復元し、Webビューの読み込み中にキャッシュされた表現を表示する必要があります

于 2009-05-27T14:30:01.967 に答える