В моем приложении есть разделенное представление, содержащее данные, полученные через вызов WS. Чтобы получить эти данные, пользователь должен войти в систему. Чтобы войти, я модально представляю экран входа в систему при загрузке приложения. После ввода учетных данных я распечатываю результат вызова WS isLoggedIn. Это все работает отлично и денди.
Проблема в том, что, находясь на экране входа в систему, isLoggedIn возвращает сообщение о том, что пользователь успешно вошел в систему (включая идентификатор сеанса), но когда я закрываю экран входа в систему, каждый вызов WS завершается неудачно, поскольку пользователь не вошел в систему. Идентификатор сеанса совпадает, и WS принимает вызовы, но iPad, похоже, удаляет сеанс после закрытия экрана входа в систему. Это приводит к следующим журналам:
2011-09-30 09:37:05.335 DSApp[366:707] url call: http://***/ipadwebservice.asmx/authenticateUser?username=user&password=pass
2011-09-30 09:37:05.508 DSApp[366:707] Call succesful.
2011-09-30 09:37:05.509 DSApp[366:707] Logged in successfully.
2011-09-30 09:37:05.511 DSApp[366:707] Dismissing LoginView.
2011-09-30 09:37:08.644 DSApp[366:7d0f] url call: http://***/ipadwebservice.asmx/getChildFoldersByFolderID?folderId=-1
2011-09-30 09:37:08.649 DSApp[366:7d0f] Call failed. (Reason: User not logged in!)
2011-09-30 09:37:09.493 DSApp[366:7d0f] url call: http://***/ipadwebservice.asmx/getDocumentsByFolderId?folderId=-1
2011-09-30 09:37:09.497 DSApp[366:7d0f] Call failed. (Reason: User not logged in!)
Еще одна странная вещь заключается в том, что когда я жестко кодирую данные для входа в систему и вызываю метод applicationDidFinishLaunching
, все работает отлично, и все вызовы WS успешно принимаются.
Буэно:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
# warning hardcode login
[WebservicesController authenticateUserWithName:@"user" andPassword:@"pass"];
self.window.rootViewController = self.splitViewController;
//login
LoginViewController *loginView = [LoginViewController new];
loginView.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
[self.splitViewController presentModalViewController:loginView animated:YES];
[loginView release];
}
Нет Буэно:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
# warning hardcode login
//[WebservicesController authenticateUserWithName:@"user" andPassword:@"pass"];
self.window.rootViewController = self.splitViewController;
//login
LoginViewController *loginView = [LoginViewController new];
loginView.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
[self.splitViewController presentModalViewController:loginView animated:YES];
[loginView release];
}