我的iPhone應用程序有一個UIWebView,用於加載包含設置Cookie的JavaScript的頁面。看來,如果我設置了一個cookie並在10-15秒內退出應用程序,那麼該cookie永遠不會被保存,但是如果我設置了cookie,請等待10-15秒,然後退出該應用程序,cookie將被保存。iPhone應用程序Cookie延遲
任何人都有任何關於爲什麼他們是延遲的信息,以及如何去立即保存cookie。
我的iPhone應用程序有一個UIWebView,用於加載包含設置Cookie的JavaScript的頁面。看來,如果我設置了一個cookie並在10-15秒內退出應用程序,那麼該cookie永遠不會被保存,但是如果我設置了cookie,請等待10-15秒,然後退出該應用程序,cookie將被保存。iPhone應用程序Cookie延遲
任何人都有任何關於爲什麼他們是延遲的信息,以及如何去立即保存cookie。
我能夠想出的唯一解決方法是在應用程序終止之前將cookie保存到用戶默認值。當應用程序打開時,通過用戶默認值,取出cookie,並將其重寫到cookie存儲。它的工作原理,但如果你的應用程序被強行終止,那麼它不會真的。
- (void)applicationDidFinishLaunching:(UIApplication *)application {
cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
[cookieStorage setCookieAcceptPolicy:NSHTTPCookieAcceptPolicyAlways];
// Load the saved cookies
NSDate *currentDate = [NSDate date];
NSTimeInterval expirationAmount = 5 * 365 * 24 * 60 * 60;
NSDate *expirationDate = [currentDate dateByAddingTimeInterval:expirationAmount];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
for (id theKey in [defaults dictionaryRepresentation]) {
if ([theKey hasPrefix:@"cookie:"]) {
[self setCookie:[theKey substringFromIndex:7] value:[defaults objectForKey:theKey] expiration:[expirationDate description] domain:urlDomain];
}
}
}
- (void)applicationWillTerminate:(UIApplication *)application {
// Save the cookies to the user defaults
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSArray* theCookies = [cookieStorage cookies];
for(NSHTTPCookie *myStr in theCookies) {
[defaults setValue:[myStr value] forKey:[NSString stringWithFormat:@"cookie:%@", [myStr name]]];
}
[[NSUserDefaults standardUserDefaults] synchronize];
}
有這個相同的問題。延遲實際上是從我的測試30秒。我失去了幾天試圖調試。可能有辦法通過在30秒過去之前手動重新保存cookie來解決這個問題,但我還沒有嘗試過。
必須有同步的餅乾的方式 – AlBeebe 2011-01-19 14:24:54
有一個[私有API(http://stackoverflow.com/a/10054438/1872297)來做到這一點。 我填寫了rdar:// 13293418([openradar](http://openradar.appspot.com/radar?id=2776403))要求將此API公開;你可以填寫一個副本給它一些重量。 – Kemenaran 2013-02-26 10:01:56