アプリのログイン システムに問題があります。
アプリを最初に開いたときは、FVC がメインのビュー コントローラーです。次に、FVC はログインしているかどうか、セッション キーがまだ有効かどうかをチェックします。そうでない場合は、LoginViewController が画面全体にポップアップ表示され、ログインを続行する必要があります。正しいユーザー名とパスワードでログインすると、Web 上の JSON ファイルをすばやくチェックし、エラーが返されなければセッション キーを返します。問題は、NSLogでいくつかのテストを行ったときにJSONファイルを正しく取得して解析していることを知っていますが、正しい情報でログインするとすぐにloginViewを閉じ、0.5秒間メインビューを表示し、次にloginView がポップアップ表示されます。何かが正しくありません。コードの問題を見つけていただければ幸いです。マイケル。
最初のView Controller:
- (void)viewDidAppear:(BOOL)animated
{
//Put login check here.
LoginViewController *login = [self.storyboard instantiateViewControllerWithIdentifier:@"login"];
[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
// create the URL we'd like to query
[[NSURLCache sharedURLCache] removeAllCachedResponses];
myURL = [[NSURL alloc]initWithString:[NSString stringWithFormat:@"%@%@", @"https://URL/v1/?get&action=getservers&session_key=", login.sessionKey]];
// we'll receive raw data so we'll create an NSData Object with it
NSData *myData = [[NSData alloc]initWithContentsOfURL:myURL];
// now we'll parse our data using NSJSONSerialization
id myJSON = [NSJSONSerialization JSONObjectWithData:myData options:NSJSONReadingMutableContainers error:nil];
// typecast an array and list its contents
NSDictionary *jsonArray = (NSDictionary *)myJSON;
NSLog(@"%@",[jsonArray objectForKey:@"status"]);
if ([[jsonArray objectForKey:@"status"] isEqualToString:@"ERROR"]) {
[self presentViewController:login animated:NO completion:nil];
}
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
}
ログイン ビュー コントローラ:
- (IBAction)loginAction:(id)sender {
[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
// create the URL we'd like to query
NSURL *myURL = [[NSURL alloc]initWithString:[NSString stringWithFormat:@"%@%@%@%@", @"https://URL/v1/?get&action=login&username=", usernameField.text, @"&password=", passwordField.text]];
// we'll receive raw data so we'll create an NSData Object with it
NSData *myData = [[NSData alloc]initWithContentsOfURL:myURL];
// now we'll parse our data using NSJSONSerialization
id myJSON = [NSJSONSerialization JSONObjectWithData:myData options:NSJSONReadingMutableContainers error:nil];
// typecast an array and list its contents
//NSArray *jsonArray = (NSArray *)myJSON;
NSDictionary *jsonArray = (NSDictionary *)myJSON;
NSLog(@"%@",[jsonArray objectForKey:@"status"]);
if ([[jsonArray objectForKey:@"status"] isEqualToString:@"OK"]) {
FirstViewController *dashView = [self.storyboard instantiateViewControllerWithIdentifier:@"dashView"];
sessionKey = [jsonArray objectForKey:@"new_session_key"];
NSLog(@"%@",sessionKey);
[self dismissViewControllerAnimated:YES completion:nil];
} else {
}
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
}