IOS開発の記録ユーザ登録状態

6616 ワード

http://www.cnblogs.com/ludashi/p/3950951.html
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
一般的な実装方法は、クライアントが最初にログインした後、サービス側は同時に1つのaccess tokenとrefresh tokenを返し、access tokenは失効期間があり、比較的短く、サービス側と通信するたびにアイデンティティチェックに使用される.refresh tokenは、access tokenが無効になった後に新しいaccess tokenを交換する際の検証に使用され、成功した後に新しいaccess tokenと新しいrefresh tokenを返します.
前回のブログではCoreDataによるデータの永続化について言及しましたが、CoreDataの構成と使用手順は複雑です.しかし、CoreDataの使用プロセスを熟知していると、CoreDataは使いやすいです.今日お話しするのは、私たちのユーザーのログイン状態をどのように記録するかです.例えば、微信、QQなどは、ユーザーがログインした後、アプリケーションを閉じて開くと直接ログインします.では、App開発でユーザーのログイン状態をどのように記録しますか?以前PHPやJavaでB/S構造のものを書いていたときに、Sessionでユーザーのログイン情報を記憶していましたが、Sessionはサーバー上に存在するのは1回だけで有効で、ユーザーのログイン状態を記録するにはCookieというものが使われていました.CookieはSessionとは異なり,Cookieはユーザがローカルに存在するファイルであり,Cookieにはユーザのログイン情報が格納され,ユーザがここにログインすると自動的にCookieからユーザのログイン情報が読み出される.
Webにかかわらず、私たちのApp開発でも同様にこのような問題に直面しています.ユーザーのログイン状態をどのように記録しますか.私たちのCoreDataで?CoreDataは大量のデータを処理するのに適しており、一般的にTable Viewと組み合わせて使用されています.もちろん、CoreDataでユーザーのログイン情報を格納することができますが、これは少し役に立たず、複雑です.では、他にもっと便利な方法はありますか?アップルがこのようにユーザー体験を重視するのは、もちろん他の方法があります.NSUserDefault.NSUserDefaultが値を設定してから同期します.
NSUserDefaultはアップルがユーザーのログイン情報を格納するために提供してくれたクラスで、もちろん持続的で、くだらないことは多くありません.ユーザーのログインとログアウトをシミュレートしたdemoについて、NSUserDefaultを使用してユーザーのログイン情報を格納する方法を学びます.
1.まず、登録ページに対応するクラスがViewController.hでなければなりません.登録ページには2つのTextFieldと1つのButtonがユーザーの入力を受け入れるために使用されます.Buttonのコールバックをクリックする方法で、ユーザーが登録に成功すれば、ユーザー情報をUserDefaultに保存し、その後、モダリティでメインインタフェースにジャンプします.まず、UserDefaultの一例を取得します.ログインページのログインボタンをコールバックする方法コードは以下の通りです.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 - (IBAction)tapLogin:(id)sender {          //     NSString *username = self.usernameTextField.text;    NSString *password = self.passwordTextField.text;          //     if  ([username isEqualToString:password]){        // userDefault         NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];                  // UserDefault        [userDefaults setObject:username forKey:@"name"];        [userDefaults setObject:password forKey:@"password"];         [userDefaults synchronize];         //         UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main"  bundle:[NSBundle mainBundle]];                  id mainViewController = [storyboard instantiateViewControllerWithIdentifier:@"MainView"];                  [self presentViewController:mainViewController animated:YES completion:^{        }];    }      }
2.ログインページの処理が完了すると、UserDefaultのname属性に値があるかどうかに基づいてどのページをロードするかを選択します.storybaordではデフォルトはメインインタフェースですが、AppDelegate.mでログインしていない場合はrootView Controlを設定します.コードは以下の通りです.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15// , // UserDefaultNSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults];NSString *name = [userDefault objectForKey:@"name"];  // storyboardUIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main"  bundle:[NSBundle mainBundle]];  // if  (name == nil){    NSLog(@"%@",name);    id view = [storyboard instantiateViewControllerWithIdentifier:@"LoginView"];    self.window.rootViewController = view;}
3.上記のコードを介して、ユーザーのログイン状態に基づいてロードされた情報を選択することができます.ログイン後のページには、終了するためのボタンを追加します.ボタンコールバックを終了する方法では、以前に保存したユーザー情報をremoveしながら、ログインページにモードでジャンプする必要があります.コードは以下の通りです.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18- (IBAction)tapLoginOut:(id)sender {          // UserDefaults     NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];          // UserDefaults     [userDefaults removeObjectForKey:@"name"];    [userDefaults removeObjectForKey:@"password"];     [userDefaults synchronize];     // storyboard    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main"  bundle:[NSBundle mainBundle]];          //     id view = [storyboard instantiateViewControllerWithIdentifier:@"LoginView"];          //     [self presentViewController:view animated:YES completion:^{    }];
次のスクリーンショットはstoryboardのスクリーンショットで、実行効果は以下と同じで、ユーザーのログイン状態を記録することができます.
IOS开发之记录用户登陆状态_第1张图片