我的iPhone应用程序有一个UIWebView,可以加载包含设置cookie的javascript的页面。似乎如果我设置一个cookie并在10-15秒内退出应用程序,那么cookie永远不会被保存,但是如果我设置了cookie,等待10-15秒然后退出应用程序,cookie就会被保存。
任何人都有任何关于他们为什么会有延迟以及如何立即保存饼干的信息。
答案 0 :(得分:4)
我能够想到的唯一解决方法是在应用程序终止之前将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];
}
答案 1 :(得分:1)
遇到同样的问题。从我的测试来看,延迟实际上是30秒。我失去了几天试图调试这个。可能有办法通过在30秒之前手动重新保存cookie来解决这个问题,但我还没有尝试过。