2016-08-24 4 views
0

Ich habe eine Website, die auch offline verwendet werden kann. Ich habe eine App erstellt, die UIWebView verwenden, und ich sagte, dass meine UIWebView diese Seite mit dem folgenden Code-Cache sollteCaching funktioniert nicht in UIWebView

[self setRequestObj:[NSURLRequest requestWithURL:loadUrl cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0]]; 

Wenn ich meine App das erste Mal mit Internetverbindung begann meine console angemeldet

2016-08-24 15:37:01.713 BrowserApp[1991:345138] applicationDidBecomeActive! 
2016-08-24 15:37:01.955 BrowserApp[1991:345138] NSURLRequestUseProtocolCachePolicy 
2016-08-24 15:37:22.003 BrowserApp[1991:345138] applicationDidEnterBackground! 
2016-08-24 15:37:22.559 BrowserApp[1991:345138] applicationWillEnterForeground! 
2016-08-24 15:37:23.075 BrowserApp[1991:345138] applicationDidBecomeActive! 
2016-08-24 15:37:37.069 BrowserApp[1991:345138] applicationDidEnterBackground! 
2016-08-24 15:37:37.073 BrowserApp[1991:345138] applicationWillTerminate! 

Ich sehe, dass jede Methode in der Datei AppDelegate.m aufgerufen wird. Ich trenne mein Handy vom Internet, starte meine App erneut (war nicht im Hintergrund wie meine console erzählt) und nichts passiert. Ich bekomme nur eine weiße Website.

Warum die website würde nicht auf meinem Bildschirm angezeigt, obwohl ich auf cache es eingestellt?

Antwort

0

Es kann sein, dass die von Ihnen geladene Seite ein Ablaufdatum hat (sie kann so eingestellt werden, dass sie sofort abläuft). Versuchen Sie es mit der Cahce-Richtlinie, die als NSURLRequestReturnCacheDataElseLoad eingestellt ist (obwohl das auf lange Sicht möglicherweise nicht gut ist, weil es nie nachladen wird).

Alternativ können (wahrscheinlich) die Antwortheader von der Website einen Cache-Control-Header enthalten. Unabhängig davon, was Sie sagen, kann die Seite NSURLRequest dennoch mitteilen, dass sie nicht zwischengespeichert werden soll.

Um dies zu untersuchen, könnten Sie einen Haltepunkt setzen oder eine Protokollierung in Ihren Code einfügen, wo Sie die Antwort erhalten haben. Werfen Sie die NSURLResponse auf eine NSHTTPURLResponse und dann auf die Header mit allHeaderFields.

Verwandte Themen