iOS中自动登录的设计
1.//这是登录控制器页面
- (void)viewDidLoad {
[super viewDidLoad];
//lt.iSNextAutoLogin是单利中的一个属性,用来保存下次是否自动登录
//如果是第一次使用app登录,iSNextAutoLogin默认就时NO,之后有了缓存之后就从缓存中取iSNextAutoLogin的值
LTUserInfo *lt=[LTUserInfo defaultUserInfo];
NSUserDefaults *def=[NSUserDefaults standardUserDefaults];
if([def boolForKey:@"iSNextAutoLogin"]==NO ||[defboolForKey:@"iSNextAutoLogin"]==YES ){
lt.iSNextAutoLogin=[def boolForKey:@"iSNextAutoLogin"];
}
//=============
if(lt.iSNextAutoLogin==NO){
//每次程序刚启动的时候,iSNextAutoLogin的值都是NO。不执行自动登录
}else{
lt.iSAutoLogin=YES;//在后面吧iSNextAutoLogin的值改成yes。程序长时间锁屏后打开,执行自动登录;
}
//===============
if(lt.iSAutoLogin==NO){ //不执行自动登录
}else{
//根据是否点击退出按钮来决定是否执行自动登录
if([lt.loginOutMark isEqualToString:@"loginOut"]){
NSLog(@"点击的是退出按钮,不执行自动登录");
}else{
//如果保存的用户名密码存在,就执行自动登录
NSUserDefaults *tempDefaults = [NSUserDefaultsstandardUserDefaults];
if(![[tempDefaultsobjectForKey:@"LTUSERNAME"]isEqualToString:@""] &&![[tempDefaults objectForKey: @"LTUSERPASSWORD"]isEqualToString:@""]){
self.userNameTF.text=[tempDefaultsobjectForKey:@"LTUSERNAME"];
self.passWordTF.text=[tempDefaults objectForKey: @"LTUSERPASSWORD"];
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1 *NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[self loginButtonPressed:nil];//设置自动登录,这里必须要延迟执行,否则登录页面没有加载完毕,会网络状态出不来;
});
}else{
NSLog(@"用户名或密码不存在");
}
}}
// //接收自动登录的通知。从appdelegate中来
// [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(refreshLoad:) name:@"refreshLoad" object:nil];
}
2.//登录按钮的方法中保存密码和设计下次是否自动登录的标记
LTUserInfo *lt=[LTUserInfo defaultUserInfo];
lt.iSNextAutoLogin=YES;//第一次登录成功后,长时间锁屏再打开执行自动登录的标记,在退出程序的时候再设置iSNextAutoLogin为NO,这样下次就不自动登录
NSUserDefaults *def =[NSUserDefaults standardUserDefaults];
[def setBool:YES forKey:@"iSNextAutoLogin"];
[def synchronize];
//=========不管有没有勾选,记住用户名密码
NSUserDefaults *tempDefaults = [NSUserDefaultsstandardUserDefaults];
[tempDefaults setObject:self.userNameTF.text forKey: @"LTUSERNAME"];
[tempDefaults setObject:self.passWordTF.text forKey: @"LTUSERPASSWORD"];
[tempDefaults synchronize];
//=========不管有没有勾选,记住用户名密码
//程序将要终止
- (void)applicationWillTerminate:(UIApplication *)application {
//程序退出,保存iSNextAutoLogin为NO;表示下次不自动登录
NSUserDefaults *def =[NSUserDefaults standardUserDefaults];
[def setBool:NO forKey:@"iSNextAutoLogin"];
[def synchronize];
NSLog(@"程序将要终止");
}
//以上几步可以实现:在app关闭的状态下打开app不自动登录,长时间锁屏后打开app实现自动登录。
相关文章
- CCPlatformConfig(设置执行平台 iOS android win32等。。。)
- iOS Sprite Kit教程之使用帮助文档以及调试程序
- iOS Simulator功能介绍关于Xamarin IOS开发
- 《iOS 9 开发指南》——导读
- 《iOS 8案例开发大全》——实例010 使用第三方工具iPhone Simulator
- 《iOS 6核心开发手册(第4版)》——2.10节子类化UIControl
- ios开发,NSFileManager的使用
- iOS自动布局高级用法 && 纯代码约束写法
- iOS 8 Auto Layout界面自动布局系列5-自身内容尺寸约束、修改约束、布局动画
- 使用 SwiftUI 构建可搜索列表,为您的 iOS 应用程序创建具有自动完成功能的可搜索列表(教程含源码)
- synchronized 递归锁 atomic 但是iOS 10之后,苹果因为一个巨大的缺陷弃用了 OSSpinLock 改为新的 os_unfair_lock
- iOS人脸识别(CoreImage)
- iOS应用千万级架构:自动埋点与曝光
- 勒索病毒蔓延至手机:安卓和iOS都没跑掉
- IOS内购项目支付审核被拒(错误状态码21007)原因及如何区分订单是沙盒环境还是真实环境
- iOS 往来--书面资料
- OpenCV For iOS 1: 连接OpenCV 3.0
- weex-platform里iOS项目打包报错/platforms/ios/../../start does not exist.