2013-06-25 101 views
0

我有一個UIWebview的問題。我打電話幾次在我的網頁視圖中打印圖片的網址,並計算了我的圖片顯示的次數。在iOS應用程序中使用UIWebview刪除緩存

當我打電話給圖片的網址計數匹配的打印數量。

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

當我用loadhtmlstring調用url時,我的計數器就是一個。使用loadhtmlstring對我來說非常重要,因爲我的API使用javascript返回了一個html代碼。

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]; 

另外,我測試通過破壞我的我的項目的實例,並創建另一個。 我摧毀了我的webview,所有我的變量......以及其他我不記得的東西。 我的計數器始終爲1

我更好的解決方案是:

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

有了這個,我算2〜3打印,但視覺效果不是我的期望。上的NSURLRequest

+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 * =基本URL [mbAdUtil getBaseURL:HTML]。

它就像是有幾個級別的緩存一樣。這是非常STANGE但它的作品...

我的解決辦法是:如果 或http://url_redirect.com電話http://url_pictures.com另一個URL,我們必須添加時間戳我。

0

添加緩存策略:

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