索引
在項(xiàng)目中添加了用戶登錄的功能,使用了一段時(shí)間后感覺每一次打開APP后都要登錄一下才能進(jìn)入到首頁,這種體驗(yàn)感覺很不舒服。
參照主流的APP流程,只要用戶第一次登錄后沒有登出,在用戶下一次打開APP的時(shí)候會(huì)自動(dòng)保存登錄的狀態(tài)。
所以需求來了,提升用戶體驗(yàn)的時(shí)候來了。
思路
查了多種途徑的邏輯設(shè)計(jì),這里就記錄一下簡(jiǎn)單的途徑,用在目前的項(xiàng)目足矣。因?yàn)槊恳淮蔚卿浂紩?huì)請(qǐng)求一次后臺(tái),后臺(tái)返回的code為1才表示登錄成功,在這里我們就用到iOS里面的數(shù)據(jù)持久化的一個(gè)類 NSUserDefault來完成就可以了。
第一步
在登錄的接口那里,登錄成功了后添加NSUserDefault類的初始化,把用戶的用戶名和密碼保存到NSUserDefault里面,像這樣
//登錄成功保存用戶名和密碼
NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults];
[userDefault setObject:phoneString forKey:@"userName"];
[userDefault setObject:passwordString forKey:@"password"];
[userDefault synchronize];
第二步
有登錄以后那就有退出登錄,在退出登錄成功后需要清除NSUserDefault里面保存的用戶信息
//清除userDefault里的登錄信息
NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults];
[userDefault removeObjectForKey:@"userName"];
[userDefault removeObjectForKey:@"password"];
[userDefault synchronize];
第三步
前兩步我們只是保證了用戶的登錄信息保存在本地里,接下來我們要做的就是在用戶打開APP的時(shí)候做一個(gè)登錄判斷。在AppDelegate的初始化方法里取出NSUserDefault的類,如果NSUserDefault里保存有用戶名的信息,則發(fā)起登錄請(qǐng)求,并跳轉(zhuǎn)到登錄后的頁面,如果沒有保存有用戶名的身份信息,則打開登錄頁面進(jìn)行手動(dòng)登錄。像這樣
//添加自動(dòng)登錄
NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults];
NSString *userName = [userDefault objectForKey:@"userName"];
NSString *password = [userDefault objectForKey:@"password"];
if(userName != nil) {
//NSLog(@"自動(dòng)登錄");
NSString *enPassword = [EncryptionHelper md5:password];
NSString *paramString = [NSString stringWithFormat:@"{account:\"%@\",password:\"%@\"}", userName, enPassword];
[[WebService webServiceInstance] requestWith:hLoginURL parameters:paramString Delegate:self showLoad:NO];
}else{
//NSLog(@"打開登錄頁面");
self.isLogin = NO;
}
以上就是根據(jù)NSUserDefaults進(jìn)行自動(dòng)登錄的思路,比較簡(jiǎn)單,我們需要做的就是在AppDelegate里面的登錄請(qǐng)求結(jié)果處理里面去做相應(yīng)的頁面跳轉(zhuǎn)就可以了。