2013-06-25 3 views
0

У меня проблема с UIWebview. Я вызываю несколько раз URL-адрес для печати фотографий в своем веб-обзоре, и я подсчитываю, сколько раз мои изображения отображались.Удалить кеш с UIWebview в приложении iOS

Когда я вызываю URL-адрес изображений, счетчик соответствует количеству печати.

NSURL *URL = [NSURL URLWithString:@"http://url_pictures.com"]; 
NSURLRequest *request = [NSURLRequest requestWithURL:URL]; 
[adView loadRequest:request]; 

Когда я вызываю url с loadhtmlstring, мой счетчик равен одному. Для меня очень важно использовать loadhtmlstring, потому что мой API возвращает мне html-код с javascript.

NSString *html = @"<html><head></head><body>document.write(\"<a target=\"_blank\"ref=\"http://url_redirect.com\"><img border=\"0\" src=\"http://url_pictures.com\"></a>\");</body></html>"; 
NSString *baseURL = [mbAdUtil getBaseURL:html]; 
NSString *script = [[NSString alloc] initWithFormat:@"%@", html]; 
[adView loadHTMLString:script baseURL:[NSURL URLWithString:baseURL]]; 

Я проверил множество вещей, которые мой счетчик имеет значение для печати.

это какой-то пример того, что я испытал:

[webView loadHTMLString:@"" baseURL:nil]; 
[webView stopLoading]; 
[webView setDelegate:nil]; 
[webView removeFromSuperview]; 

Другой:

// remove all cached responses 
[[NSURLCache sharedURLCache] removeAllCachedResponses]; 

// set an empty cache 
NSURLCache *sharedCache = [[NSURLCache alloc] initWithMemoryCapacity:0 diskCapacity:0 diskPath:nil]; 
[NSURLCache setSharedURLCache:sharedCache]; 

// remove the cache for a particular request 
[[NSURLCache sharedURLCache] removeCachedResponseForRequest:request]; 

Кроме того, я проверил, уничтожив мой экземпляр моего проекта и создать другой. Я уничтожил свой веб-просмотр, всю мою переменную ... и многое другое, что я не могу вспомнить. Мой счетчик всегда равен 1.

Мой лучшим решением является:

[webView loadHTMLString:@"" baseURL:nil]; 
[webView stopLoading]; 
[webView setDelegate:nil]; 
[webView removeFromSuperview]; 

С этим я считаю 2 до 3 печати, но визуальный результат не то, что я ожидал.

+0

Какова ваша переменная подсчета? –

+0

моя переменная подсчета находится в базе данных при вызове url, база данных увеличивается – floflo41

ответ

0

Я решил свою проблему! я удалить все мои тесты и я добавил метку времени имеет все уровни:

NSString *html = @"<html><head></head><body>document.write(\"<a target=\"_blank\"ref=\"http://url_redirect.com?time = 123456789\"><img border=\"0\" src=\"http://url_pictures.com?time = 123456789\"></a>\");</body></html>"; 

NSString * BaseUrl = [mbAdUtil getBaseURL: HTML];

он такой же, как если бы был кеш уровня. Это очень Штанге, но это работает ...

Мое решение: если http://url_redirect.com или http://url_pictures.com вызов другой URL, мы должны добавить метку времени для меня.

0

политики Добавить кэш на NSURLRequest:

NSURL *URL = [NSURL URLWithString:@"http://url_pictures.com"]; 
NSURLRequest *request = [NSURLRequest requestWithURL:URL cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData timeoutInterval:10]; 
[adView loadRequest:request]; 

там три политика, скорее всего, поможет ваше решение:

  • NSURLRequestReloadIgnoringLocalCacheData,
  • NSURLRequestReloadIgnoringLocalAndRemoteCacheData,
  • NSURLRequestReloadIgnoringCacheData
+4

Я хочу использовать loadhtmlstring, а не loadRequest. С loadRequest он работает – floflo41