iOS中的自动登录

索引

在项目中添加了用户登录的功能,使用了一段时间后感觉每一次打开APP后都要登录一下才能进入到首页,这种体验感觉很不舒服。

参照主流的APP流程,只要用户第一次登录后没有登出,在用户下一次打开APP的时候会自动保存登录的状态。

所以需求来了,提升用户体验的时候来了。

思路

查了多种途径的逻辑设计,这里就记录一下简单的途径,用在目前的项目足矣。因为每一次登录都会请求一次后台,后台返回的code为1才表示登录成功,在这里我们就用到iOS里面的数据持久化的一个类 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的时候做一个登录判断。在AppDelegate的初始化方法里取出NSUserDefault的类,如果NSUserDefault里保存有用户名的信息,则发起登录请求,并跳转到登录后的页面,如果没有保存有用户名的身份信息,则打开登录页面进行手动登录。像这样

//添加自动登录

NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults];

NSString *userName = [userDefault objectForKey:@"userName"];

NSString *password = [userDefault objectForKey:@"password"];

if(userName != nil) {

//NSLog(@"自动登录");

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;

}

以上就是根据NSUserDefaults进行自动登录的思路,比较简单,我们需要做的就是在AppDelegate里面的登录请求结果处理里面去做相应的页面跳转就可以了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容