遇到的问题
项目中有图文混排显示的需求,后台返回的是一段html代码,这个很简单,直接用webView的
loadHTMLString
方法就可以实现。问题出现在,后台返回的HTML代码中的img
图片链接,并非绝对路径,而是重定向地址,需要登录之后拿到Cookie才能正确的定向到图片。但是如果不做处理iOS应用从后台退出之后,Cookie会自动在本地删除,于是就会导致再次打开APP加载不到正确的图片。
解决方法
方法一、在做请求的时候设置Cookie,这个我不知道loadHTMLString方法的时候如何设置请求Cookie,望告知;
方法二、在登陆成功之后会将Cookie存储到
NSHTTPCookieStorage
中,我们只需要将本应用的Cookie找到,并设置失效时间和应用退出保留Cookie即可。
//设置Cookie避免退出应用就被清楚失效,退出登录之后这个cookie会被清除
NSHTTPCookieStorage* cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
NSArray *cookies = [cookieStorage cookies];
for (NSHTTPCookie *cookie in cookies) {
// NSLog(@"%@",cookie);
if ([cookie.name isEqualToString:@"应用Cookie的name"]) {
NSMutableDictionary *properties = [[cookie properties] mutableCopy];
//将cookie过期时间设置为一年后
NSDate *expiresDate = [NSDate dateWithTimeIntervalSinceNow:3600*24*30*12];
properties[NSHTTPCookieExpires] = expiresDate;
//下面一行是关键,删除Cookies的discard字段,应用退出,会话结束的时候继续保留Cookies
[properties removeObjectForKey:NSHTTPCookieDiscard];
//重新设置改动后的Cookies
[cookieStorage setCookie:[NSHTTPCookie cookieWithProperties:properties]];
}
}