[
https://issues.apache.org/jira/browse/CB-874?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13290966#comment-13290966
]
Jason Shah commented on CB-874:
-------------------------------
Solution:
1.) Add this to didFinishLaunchingWithOptions:
// Restore cookies
NSData *cookiesData = [[NSUserDefaults standardUserDefaults]
objectForKey:SavedHTTPCookiesKey];
if (cookiesData) {
NSArray *cookies = [NSKeyedUnarchiver
unarchiveObjectWithData:cookiesData];
for (NSHTTPCookie *cookie in cookies) {
[[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookie:cookie];
}
}
2.) Add the following to applicationDidEnterBackground:
//Save cookies
NSData *cookiesData = [NSKeyedArchiver
archivedDataWithRootObject:[[NSHTTPCookieStorage sharedHTTPCookieStorage]
cookies]];
[[NSUserDefaults standardUserDefaults] setObject:cookiesData
forKey:SavedHTTPCookiesKey];
All set. That took an uncomfortably long time to figure out...
> AJAX session launch when iOS app killed/restarted
> -------------------------------------------------
>
> Key: CB-874
> URL: https://issues.apache.org/jira/browse/CB-874
> Project: Apache Cordova
> Issue Type: Bug
> Components: iOS
> Affects Versions: 1.7.0
> Environment: iOS 5.1, Cordova 1.7.0, iPad 3
> Reporter: Jason Shah
> Assignee: Shazron Abdullah
>
> 1. Launch the app
> 2. Login. This saves information in the Webkit's session (I believe)
> 3. Perform a $.ajax call to the server
> 4. Expected = Actual: server authenticates client with session and returns
> information
> 5. Now, tap home screen button, double-tap to kill the app, and relaunch
> 6. Perform the same $.ajax call to the server
> 7. Expected: server authenticates client with session and returns information
> 8. Actual: session information doesn't seem to be sent, so server returns
> HTTP code 401 Unauthorized
> My $.ajax requests are very simple:
> $.ajax({
> url: 'http://abc.com/info.json',
> type: 'GET',
> dataType: 'json',
> cache: false,
> success: function (forms) {
> // do stuff
> },
> error: function (response, textStatus) {
> if (response.status == 401) {
> // Handle unauthorized.
> // XXX This is the code path that is followed on second
> invocation.
> localStorage.clear();
> $.mobile.changePage( "#login" );
> } else {
> // Handle all other errors
> }
> },
> complete: function () {
> // Do stuff
> }
> });
> This code works fine in Chrome and Firefox. It fails in iOS.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira