未保存cookie / Cocoa WebView状态



我目前的PandoraMan (http://github.com/zquestz/PandoraMan)有一些问题。在大多数情况下,一切都是功能性的,窗口位置被保存,所有重要的功能都可以工作,但是我看到了一个bug。

当我登录到潘多拉,它永远不会被保存。我假设它读取系统cookie并与Safari共享状态。旧版本(在10.4上使用旧的xcode)可以正常工作。

如果我启动应用程序并使用PandoraMan登录,它会登录,并且网站正常工作。然而,当我重新启动应用程序时,我总是不得不再次登录。这从来没有发生过,我在文档中找不到任何关于这个问题的东西。

如果有人对这个问题有一些见解,那就太好了。代码是开源的,因此您可以检查问题,而不必在注释中来回弹跳代码。

您的应用程序在[NSHTTPCookieStorage sharedHTTPCookieStorage]容器中有自己的"cookie jar"。

下面是如何快速查看应用程序cookie罐子中的cookie的方法:

NSHTTPCookie *cookie;
NSHTTPCookieStorage *cookieJar = [NSHTTPCookieStorage sharedHTTPCookieStorage];
for (cookie in [cookieJar cookies]) {
    NSLog(@"%@", cookie);
}

有几种方法可用于过滤和操作。看一看NSHTTPCookieStorage关于访问cookie的文档,以及NSHTTPCookie关于访问单个cookie属性的文档

Pandora使用localStorage来保存用户状态。使用:

WebPreferences* prefs = [WebPreferences standardPreferences];
[prefs _setLocalStorageDatabasePath:@"~/Library/Application Support/MyApp"];
[prefs setLocalStorageEnabled:YES];
[self.webView setPreferences:prefs];

将这些添加到文件的开头:

@interface WebPreferences (WebPreferencesPrivate)
- (void)_setLocalStorageDatabasePath:(NSString *)path;
- (void)setLocalStorageEnabled:(BOOL)localStorageEnabled;
@end

更多:如何在基于webkit的应用程序中启用本地存储?

最新更新