我目前的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的应用程序中启用本地存储?