2012-06-27 56 views
3

我有一个适用于iOS的PhoneGap/Corodova项目。在iOS模拟器上构建时,我使用了Jquery Cookies,并且它们都很好。但是,现在我的设备上已有应用程序进行测试,因此它们不再有效。我猜这只是iOS不支持的东西。PhoneGap/Cordova:如何获取使用Cookie(iOS)?

有没有人知道一种方法来做iOS的客户端cookie?

PS:我现在的饼干代码(以防万一它是有用的):

<script type="text/javascript" charset="utf-8" src="js/jquery.cookie.js"></script> 
    <!--STARTUP SCREEN COOKIE SETTER--> 
    <script type="text/javascript"> 
     $(function() { 
     var cookiedate = new Date(); 
     cookiedate.setTime(cookiedate.getTime() + (60 * 60 * 1000)); 
     $.cookie("startupscreen", "checked", { expires: cookiedate, path: '/' }) 
       }); 
    </script> 
+0

试试这个设置,可能工作 - HTTPS:/ /groups.google.com/forum/?fromgroups#!topic/phonegap/ZJE1nxX63ow – dhaval

+0

我有同样的问题。我试图从AJAX调用中设置cookie,而在PhoneGap 2.0中,NSHTTPCookieStorage设置已经在AppDelegate.m中...但无济于事,iOS6不会从我的.NET MVC3应用程序中设置cookie。 – sonjz

回答

2

为什么不使用localStorage的? ios5支持像localStorage这样的HTML5功能。

localStorage

+0

谢谢!这就是我最终做的,虽然我不确定这是否是本地存储应该由W3C终止的最佳方式 – MeltingDog

+0

localStorage不会停止,它将停止使用sql数据库。但即使该规范从html5浏览器中删除,可能会继续支持它。 – weexpectedTHIS

+0

WebSQL规范没有得到进一步发展的唯一原因是每个人都意外地对嵌入式SQLite进行了标准化,所以没有进一步推动标准......它不应该在任何地方。 – XML

1

将这个在这里你的应用程序代理:

-(void)applicationDidEnterBackground:(UIApplication *)application{ 
    NSData *cookiesData = [NSKeyedArchiver archivedDataWithRootObject:[[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies]]; 
    [[NSUserDefaults standardUserDefaults] setObject:cookiesData 
               forKey:@"xapp"]; 

} 

and in (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions: 

(NSDictionary*)launchOptions 
// Restore cookies 
    NSData *cookiesData = [[NSUserDefaults standardUserDefaults] objectForKey:@"xapp"]; 
    if (cookiesData) { 
     NSArray *cookies = [NSKeyedUnarchiver unarchiveObjectWithData:cookiesData]; 
     for (NSHTTPCookie *cookie in cookies) 
     { [[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookie:cookie]; } 

    } 

这使得像往常一样工作在科尔多瓦3.4.x饼干和iOS6的+

+0

可以通过缩进四个空格来格式化代码(您可以选择并使用'{}'按钮作为快捷方式。) – McDowell