我不得不为你提问。
1:我在我的 iPhone 应用程序中使用 UIWebView
。我不希望用户能够在新闻中添加评论。但是,要发表评论,他们必须先登录。
如果没有,我如何在 UIWebView
中接受 cookie?
2 : 在 UIWebView
中创建的 cookie 在其他 UIWebView
中是否可用在其他 View 中?
例如:我有我的 LoginViewController
,带有一个嵌入式 UIWebView
,我的用户可以在其中登录/注销。如果他们在此 View 中登录,cookie 仍将在 CommentViewController
中可用?
如果没有,我怎样才能使这成为可能?
提前致谢!
最佳答案
UIWebView
将自动将 cookie 存储在 [NSHTTPCookieStorage sharedHTTPCookieStorage]
集合中,并且应该在您的所有其他 UIWebView
中可用应用程序,在同一应用程序启动期间。但是,UIWebView
类不会自动存储在应用程序启动之间加载的页面的 cookie。您需要在应用移至后台时手动存储 cookie,并在应用返回前台时重新加载值。
将以下代码放在您的 AppDelegate 类中:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
//Other existing code
[self loadHTTPCookies];
return YES;
}
- (void)applicationDidEnterBackground:(UIApplication *)application
{
//Other existing code
[self saveHTTPCookies];
}
- (void)applicationWillEnterForeground:(UIApplication *)application
{
[self loadHTTPCookies];
}
- (void)applicationWillTerminate:(UIApplication *)application
{
//Other existing code
[self saveHTTPCookies];
}
-(void)loadHTTPCookies
{
NSMutableArray* cookieDictionary = [[NSUserDefaults standardUserDefaults] valueForKey:@"cookieArray"];
for (int i=0; i < cookieDictionary.count; i++)
{
NSMutableDictionary* cookieDictionary1 = [[NSUserDefaults standardUserDefaults] valueForKey:[cookieDictionary objectAtIndex:i]];
NSHTTPCookie *cookie = [NSHTTPCookie cookieWithProperties:cookieDictionary1];
[[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookie:cookie];
}
}
-(void)saveHTTPCookies
{
NSMutableArray *cookieArray = [[NSMutableArray alloc] init];
for (NSHTTPCookie *cookie in [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies]) {
[cookieArray addObject:cookie.name];
NSMutableDictionary *cookieProperties = [NSMutableDictionary dictionary];
[cookieProperties setObject:cookie.name forKey:NSHTTPCookieName];
[cookieProperties setObject:cookie.value forKey:NSHTTPCookieValue];
[cookieProperties setObject:cookie.domain forKey:NSHTTPCookieDomain];
[cookieProperties setObject:cookie.path forKey:NSHTTPCookiePath];
[cookieProperties setObject:[NSNumber numberWithUnsignedInteger:cookie.version] forKey:NSHTTPCookieVersion];
[cookieProperties setObject:[[NSDate date] dateByAddingTimeInterval:2629743] forKey:NSHTTPCookieExpires];
[[NSUserDefaults standardUserDefaults] setValue:cookieProperties forKey:cookie.name];
[[NSUserDefaults standardUserDefaults] synchronize];
}
[[NSUserDefaults standardUserDefaults] setValue:cookieArray forKey:@"cookieArray"];
[[NSUserDefaults standardUserDefaults] synchronize];
}
关于ios - 是否接受 UIWebView 中的 cookie?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26005641/