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实现自动登录。
iOS中自动登录的设计的更多相关文章
- 浅谈iOS中MVVM的架构设计与团队协作
说到架构设计和团队协作,这个对App的开发还是比较重要的.即使作为一个专业的搬砖者,前提是你这砖搬完放在哪?不只是Code有框架,其他的东西都是有框架的,比如桥梁等等神马的~在这儿就不往外扯了.一个好 ...
- iOS中自动释放问题?
--前言:iOS开发中关于对象的释放问题,虽然知道规则,但总不清楚自动释放的对象什么时候彻底消失?它存在的多久?什么情况会消失?都不清楚,每次用自动释放对象,总有点心虚的感觉,以下是一些例子.研究. ...
- IOS中 浅谈iOS中MVVM的架构设计与团队协作
今天写这篇文章是想达到抛砖引玉的作用,想与大家交流一下思想,相互学习,博文中有不足之处还望大家批评指正.本篇文章的内容沿袭以往博客的风格,也是以干货为主,偶尔扯扯咸蛋(哈哈~不好好工作又开始发表博客啦 ...
- iOS开发:代码通用性以及其规范 第二篇(猜想iOS中实现TableView内部设计思路(附代码),以类似的思想实现一个通用的进度条)
在iOS开发中,经常是要用到UITableView的,我曾经思考过这样一个问题,为什么任何种类的model放到TableView和所需的cell里面,都可以正常显示?而我自己写的很多view却只是能放 ...
- 浅谈iOS中MVVM的架构设计与团队协作【转载】
今天写这篇文章是想达到抛砖引玉的作用,想与大家交流一下思想,相互学习,博文中有不足之处还望大家批评指正.本篇文章的内容沿袭以往博客的风格,也是以干货为主,偶尔扯扯咸蛋(哈哈~不好好工作又开始发表博客啦 ...
- iOS中MVVM的架构设计与团队协作
对MVVM的理解主要是借鉴于之前的用过的MVC的Web框架,之前用过ThinkPHP框架,和SSH框架,都是MVC的架构模式,今天MVVM与传统的MVC可谓是极为相似,也可以说是兄弟关系,也就是一家人 ...
- 浅谈iOS中MVVM的架构设计
MVVM就是在MVC的基础上分离出业务处理的逻辑到viewModel层. M: Model层是API请求的原始数据,充当DTO(数据传输对象),当然,用字典也是可以的,编程么,要灵活一些.Model ...
- iOS中为网站添加图标到主屏幕
1 <link rel="apple-touch-icon-precomposed" href="icon.png"/> 2 <link re ...
- iOS中为网站添加图标到主屏幕以及增加启动画面
虽然没有能力开发Native App,但还是可以利用iOS中Safari浏览器的特性小小的折腾一下,做一个伪Web App满足下小小的虚荣心的. 既然是在iOS中的Safari折腾的,那么代码中利用到 ...
随机推荐
- 【C++】拷贝构造函数(深拷贝,浅拷贝)详解
一.什么是拷贝构造函数 首先对于普通类型的对象来说,它们之间的复制是很简单的,例如: ; int b = a; 而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量. 下面看一个类对 ...
- [转] css自定义字体font-face的兼容和使用
@Font-face目前浏览器的兼容性: Webkit/Safari(3.2+) TrueType/OpenType TT (.ttf) .OpenType PS (.otf): Opera (10+ ...
- mongosync同步1,oplog同步会读取其他集合同步
使用mongosync同步数据 注意: 我下面的这个mongodb版本较低(3.2.16), 还可以用这个工具来同步数据.工具不支持更高版本的mongodb了. 使用方法: https://g ...
- sum of powers
题意: 考虑所有的可重集{a1,a2,a3....ak} 满足a1+a2+....+ak=n,求所有a1^m+a2^m+a3^m的和 n,m,k<=5000 题解: part1: 考虑f[i][ ...
- Ajax提交form表单内容和文件(jQuery.form.js)
jQuery官网是这样介绍form.js A simple way to AJAX-ify any form on your page; with file upload and progress s ...
- Matrix PKU 2155
问题描述 给定N * N矩阵A,其元素为0或1.A [i,j]表示第i行和第j列中的数字.最初我们有A [i,j] = 0(1 <= i,j <= N). 我们可以通过以下方式更改矩阵.给 ...
- 074 hbase与mapreduce集成
一:运行给定的案例 1.获取jar包里的方法 2.运行hbase自带的mapreduce程序 lib/hbase-server-0.98.6-hadoop2.jar 3.具体运行 注意命令:mapre ...
- 069 Hue协作框架
一:介绍 1.官网 官网:http://gethue.com/ 下载:http://archive.cloudera.com/cdh5/cdh/5/,只能在这里下载,不是Apache的 手册:http ...
- 在phpstorm中svn的使用
目 录 1.搭建svn环境 1.1搭建svn服务端 1.2创建svn用户和密码 2.开始在phpstorm中链接svn 2.1打开Subversion 2.2 输入svn地址 2.3选择导出文件,进 ...
- python模块中sys.argv[]使用
一.sys 模块 sys是Python的一个「标准库」,也就是官方出的「模块」,是「System」的简写,封装了一些系统的信息和接口. 官方的文档参考:https://docs.python.org/ ...