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];

//=========不管有没有勾选,记住用户名密码

3.在appdelegate中:

//程序将要终止

- (void)applicationWillTerminate:(UIApplication *)application {

//程序退出,保存iSNextAutoLogin为NO;表示下次不自动登录

NSUserDefaults *def =[NSUserDefaults standardUserDefaults];

[def setBool:NO forKey:@"iSNextAutoLogin"];

[def synchronize];

NSLog(@"程序将要终止");

}

 

//以上几步可以实现:在app关闭的状态下打开app不自动登录,长时间锁屏后打开app实现自动登录。

iOS中自动登录的设计的更多相关文章

  1. 浅谈iOS中MVVM的架构设计与团队协作

    说到架构设计和团队协作,这个对App的开发还是比较重要的.即使作为一个专业的搬砖者,前提是你这砖搬完放在哪?不只是Code有框架,其他的东西都是有框架的,比如桥梁等等神马的~在这儿就不往外扯了.一个好 ...

  2. iOS中自动释放问题?

    --前言:iOS开发中关于对象的释放问题,虽然知道规则,但总不清楚自动释放的对象什么时候彻底消失?它存在的多久?什么情况会消失?都不清楚,每次用自动释放对象,总有点心虚的感觉,以下是一些例子.研究. ...

  3. IOS中 浅谈iOS中MVVM的架构设计与团队协作

    今天写这篇文章是想达到抛砖引玉的作用,想与大家交流一下思想,相互学习,博文中有不足之处还望大家批评指正.本篇文章的内容沿袭以往博客的风格,也是以干货为主,偶尔扯扯咸蛋(哈哈~不好好工作又开始发表博客啦 ...

  4. iOS开发:代码通用性以及其规范 第二篇(猜想iOS中实现TableView内部设计思路(附代码),以类似的思想实现一个通用的进度条)

    在iOS开发中,经常是要用到UITableView的,我曾经思考过这样一个问题,为什么任何种类的model放到TableView和所需的cell里面,都可以正常显示?而我自己写的很多view却只是能放 ...

  5. 浅谈iOS中MVVM的架构设计与团队协作【转载】

    今天写这篇文章是想达到抛砖引玉的作用,想与大家交流一下思想,相互学习,博文中有不足之处还望大家批评指正.本篇文章的内容沿袭以往博客的风格,也是以干货为主,偶尔扯扯咸蛋(哈哈~不好好工作又开始发表博客啦 ...

  6. iOS中MVVM的架构设计与团队协作

    对MVVM的理解主要是借鉴于之前的用过的MVC的Web框架,之前用过ThinkPHP框架,和SSH框架,都是MVC的架构模式,今天MVVM与传统的MVC可谓是极为相似,也可以说是兄弟关系,也就是一家人 ...

  7. 浅谈iOS中MVVM的架构设计

    MVVM就是在MVC的基础上分离出业务处理的逻辑到viewModel层. M:  Model层是API请求的原始数据,充当DTO(数据传输对象),当然,用字典也是可以的,编程么,要灵活一些.Model ...

  8. iOS中为网站添加图标到主屏幕

    1 <link rel="apple-touch-icon-precomposed" href="icon.png"/> 2 <link re ...

  9. iOS中为网站添加图标到主屏幕以及增加启动画面

    虽然没有能力开发Native App,但还是可以利用iOS中Safari浏览器的特性小小的折腾一下,做一个伪Web App满足下小小的虚荣心的. 既然是在iOS中的Safari折腾的,那么代码中利用到 ...

随机推荐

  1. ubuntu基本用法

    • Linux上vim编辑器缩进的设置 • 从零开始UNIX环境高级编程(0):Linux下运行第一个程序

  2. android修改默认输入法

    方案一:adb命令设置?方案2:系统配置:方案3:调用系统API接口设置---------------------------adb shell cmdadb rootadb remountadb p ...

  3. hdu 1385 Floyd 输出路径

    Floyd 输出路径 Sample Input50 3 22 -1 43 0 5 -1 -122 5 0 9 20-1 -1 9 0 44 -1 20 4 05 17 8 3 1 //收费1 3 // ...

  4. openstack学习-Horizon安装(八)

    一.安装Horizon [root@linux-node2 ~]# yum install -y openstack-dashboard 二.Horizon配置 [root@linux-node2 ~ ...

  5. Codeforces 1041F Ray in the tube (看题解)

    Ray in the tube 感觉是套路题.. 如果确定一个差值x我们如何取确定答案呢, 我们把a[ i ] -> a[ i ] % (2 * x), 把b[ i ] -> (b[ i ...

  6. 51Nod 算法马拉松28 B题 相似子串 哈希

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - 51Nod1753 题意概括 两个字符串相似定义为: 1.两个字符串长度相等 2.两个字符串对应位置上有且仅有 ...

  7. BZOJ1296 [SCOI2009]粉刷匠 动态规划 分组背包

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1296 题意概括 有 N 条木板需要被粉刷. 每条木板被分为 M 个格子. 每个格子要被刷成红色或蓝 ...

  8. 【LeetCode】157. Read N Characters Given Read4

    Difficulty: Easy  More:[目录]LeetCode Java实现 Description The API: int read4(char *buf) reads 4 charact ...

  9. ZooKeeper典型应用场景:分布式锁

    分布式锁是控制分布式系统之间同步访问共享资源的一种方式.如果不同的系统或是同一个系统的不同主机之间共享了一个或一组资源,那么访问这些资源的时候,往往需要通过一些互斥手段来防止彼此之间的干扰,以保证一致 ...

  10. rdesktop方法(Linux to Windows)

    我的配置: rdesktop -g 960x1080 -a 16 -u aura-bd -0 192.168.62.241 1. 准备工作: ubuntu端: sudo apt-get install ...