سؤال

هدفي: مواصلة جلسة ويب عبر مقاطعة التطبيق (على سبيل المثال. الرسائل القصيرة الواردة التي تتم قراءتها).

نهج ج:لقد حاولت تخزين محتويات UIWebView في NSUserDefaults، مثل هذا:

NSData *webViewData = [NSKeyedArchiver archivedDataWithRootObject:webView];
[[NSUserDefaults standardUserDefaults] setObject:webViewData forKey:kDefaultsWebViewObjectKey];

ثم استعادته مثل:

NSData *dta = [[NSUserDefaults standardUserDefaults] objectForKey:kDefaultsWebViewObjectKey];
webView = [NSKeyedUnarchiver unarchiveObjectWithData:dta];

ولكن هذا لا يشمل المحتويات.

النهج ب:لقد حاولت أيضا الحصول على محتويات UIWebView مع:

NSString *content = [webView stringByEvaluatingJavaScriptFromString:@"document.body.innerHTML;"];

ثم قم بتخزينها، واسترجأها مرة أخرى، ثم أحاول تعيينه في UIWebView مع:

- (void)loadData:(NSData *)data MIMEType:(NSString *)MIMEType textEncodingName:(NSString *)encodingName baseURL:(NSURL *)baseURL

لكن JavaScript Innerhtml لا يعد المحتوى بأكمله.

أي أفكار أو اقتراحات، إلخ؟

هل كانت مفيدة؟

المحلول

انتهى بي الأمر باستخدام NsurlRequests، ثم قم بتخزين هيئة HTTP المستردة وملفات تعريف الارتباط إلى NSUSERDEFAULTS.

بعد إعادة الدخول إلى التطبيق، قرأت هذه ووضعها مرة أخرى على uiwebview وفي nshttpcookiestorage، ثم قم بإزالة NSUSERDEFAULTS لهذه المفاتيح.

نصائح أخرى

إذا لم تشير المستند إلى أي موارد (أو تقوم بذلك بشكل صريح)، فيجب أن تكون قادرا على استعادة OutterHTML:

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

للحصول على تجربة Smoothest، سيتعين عليك أيضا استعادة خصائص التمرير والتكبير وأوضح تمثيل مخزن مؤقت أثناء تحميل WebView

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top