Ios 如何让UIWebView会话永不过期

Ios 如何让UIWebView会话永不过期,ios,iphone,uiwebview,nsurlrequest,Ios,Iphone,Uiwebview,Nsurlrequest,我正在尝试将会话保存在UIWebView上,如下链接所示: 在viewDidLoad中: NSURLRequest *webRequest = [NSURLRequest requestWithURL:homeURL]; NSArray *cookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies]; NSMutableURLRequest *requestMut = [NSMutableURLRequest request

我正在尝试将会话保存在
UIWebView
上,如下链接所示:

viewDidLoad
中:

NSURLRequest *webRequest = [NSURLRequest requestWithURL:homeURL];
NSArray *cookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies];

NSMutableURLRequest *requestMut = [NSMutableURLRequest requestWithURL:webRequest.URL];
[requestMut setHTTPShouldHandleCookies:YES];
webRequest = [self addCookies:cookies forRequest:requestMut];
[_tgWebView loadRequest:webRequest];  
但应用程序再次出现在登录屏幕上,即会话未保存。是我刚刚发现的一个类似的问题没有回答。
更新:我试图将Cookie的过期日期设置为大约提前十年,但问题仍然没有解决:

+ (void)loadCookies
{
    NSArray *cookies = [NSKeyedUnarchiver unarchiveObjectWithData: [[NSUserDefaults standardUserDefaults] objectForKey: @"SAVED_COOKIES"]];
    NSHTTPCookieStorage *cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage];

    for (NSHTTPCookie *cookie in cookies)
    {
        NSMutableDictionary *newProperties = [[NSMutableDictionary alloc]initWithDictionary:cookie.properties];
        NSDate *date = [newProperties objectForKey:NSHTTPCookieExpires];
        if(date == nil)
            [newProperties setObject:[[NSDate date] dateByAddingTimeInterval:100*12*30*60*60] forKey:NSHTTPCookieExpires];
        else
            [newProperties setObject:[[NSDate date] dateByAddingTimeInterval:100*12*30*60*60] forKey:NSHTTPCookieExpires];
        NSHTTPCookie *newCookie = [NSHTTPCookie cookieWithProperties:newProperties];
        [cookieStorage setCookie: newCookie];
        NSLog(@"%@",newCookie);
    }
}

这只是一种可能的实现: 先把饼干放好

- (void)saveCookies {
   NSData *cookiesData = [NSKeyedArchiver archivedDataWithRootObject: [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies]];
   NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
   [defaults setObject: cookiesData forKey: @"cookies"];
   [defaults synchronize];
}
还原Cookie:

- (void)loadCookies {
   NSArray *cookies = [NSKeyedUnarchiver unarchiveObjectWithData:[[NSUserDefaults standardUserDefaults] objectForKey: @"cookies"]];
   NSHTTPCookieStorage *cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
   for (NSHTTPCookie *cookie in cookies) {
    [cookieStorage setCookie: cookie];
   }
}

你们在模拟器上测试过吗?如果应用正在运行,您再次点击run按钮,它可能没有时间保存cookie。我做了一个简单的loadRequest,没有关于cookie的任何代码,也不需要再次登录。您可以在设备和其他URL上尝试,这可能是服务器问题。何时调用保存和加载Cookie?
- (void)loadCookies {
   NSArray *cookies = [NSKeyedUnarchiver unarchiveObjectWithData:[[NSUserDefaults standardUserDefaults] objectForKey: @"cookies"]];
   NSHTTPCookieStorage *cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
   for (NSHTTPCookie *cookie in cookies) {
    [cookieStorage setCookie: cookie];
   }
}