IOS開發之記錄使用者登陸狀態,ios開發使用者登陸

來源:互聯網
上載者:User

IOS開發之記錄使用者登陸狀態,ios開發使用者登陸

  上一篇部落格中提到了用CoreData來進行資料的持久化,CoreData的配置和使用步驟還是挺複雜的。但熟悉CoreData的使用流程後,CoreData還是蠻好用的。今天要說的是如何記錄我們使用者的登陸狀態。例如,QQ等,在使用者登陸後,關閉應用在開啟就直接登陸了。那麼我們在App開發中如何記錄使用者的登陸狀態呢?之前在用PHP或者Java寫B/S結構的東西的時候,我們用Session來儲存使用者的登陸資訊,Session是存在伺服器上僅在一次回話中有效,如果要記錄使用者的登陸狀態,那麼會用到一個叫Cookie的東西。Cookie和Session不同,Cookie是存在使用者本地的一個檔案,Cookie中存的就是使用者的登陸資訊,當使用者在此登陸時,自動從Cookie中讀取使用者的登陸資訊。

  不扯Web的啦,在我們App開發中同樣也遇到這要的問題,如何記錄使用者的登陸狀態呢? 用我們的CoreData蠻? CoreData適合處理大量的資料,一般和TableView來結合起來使用,當然我們可以用CoreData來儲存使用者的登陸資訊,但這不免有點大材小用,而且用起來也是比較複雜的。那麼我們有其他更便捷的方法嗎?蘋果這麼注重使用者體驗,當然有其他的方法了,就是NSUserDefault. NSUserDefault設定完值以後要進行同步

  NSUserDefault是蘋果提供給我們用來儲存使用者的登陸資訊的一個類,當然是持久化的了,廢話不多說了。我們就類比一個使用者登陸和登出的demo來學習一下如何使用NSUserDefault來儲存使用者的登陸資訊。

  1.首先我們得有一個登陸頁面對應的類為ViewController.h, 在登陸頁面有兩個TextField和一個Button用來接受使用者的輸入,在點擊Button中的回調的方法中,如果使用者登陸成功,則把使用者資訊存入UserDefault中,然後以模態的方式來跳轉到主介面,首先我們要擷取UserDefault的單例,登陸頁面中的登陸按鈕回調的方法代碼如下:

12345678910111213141516171819202122232425 - (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中如果未登陸,我們會設定一下rootViewController,代碼如下

123456789101112131415 //判斷是否登陸,由登陸狀態判斷啟動頁面//擷取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掉,同時用模態的方式來跳轉到登陸頁面,代碼如下:

123456789101112131415161718 - (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開發中怎記錄程式退出的時間

你所說的程式退出是退出進程還是按home鍵退到後台
如果是前者,還真沒有什麼招來記錄
如果是後者,在appdelegate裡有個代理方法applicationDidEnterBackground,當按home後,該方法觸發
 
ios開發,怎儲存使用者名稱密碼

上傳伺服器儲存。。本地plist儲存。。Userdefault儲存。。sqlite儲存
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.