Cookie / / Cocoa WebView状态未被保留

时间:2011-11-23 22:33:51

标签: objective-c macos cocoa webkit

我目前的PandoraMan版本存在一些问题(http://github.com/zquestz/PandoraMan)。一切都是功能性的,窗口位置正在保存,所有基本功能都有效,但是我看到了一个错误。

当我登录Pandora时,它永远不会被保留。我假设它读取系统cookie并与Safari共享状态。旧版本(在10.4上使用古老的xcode)运行良好。

如果我启动应用程序并使用PandoraMan登录,它会登录,并且网站正常工作。但是当我重新启动应用程序时,我总是要再次登录。这从未发生过,我在文档中找不到有关此问题的任何内容。

如果有人对这个问题有一些了解,那就太棒了。代码是开源的,因此您可以检查问题,而无需在评论中来回反复代码。

2 个答案:

答案 0 :(得分:1)

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

以下是如何快速查看应用程序的cookie jar中的cookie:

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

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

可能这可以帮助你解决问题。

答案 1 :(得分:1)

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

更多:How do I enable Local Storage in my WebKit-based application?