iOS中app设计、自动登录的设计

 

*********自动登陆的设计

1.首次启动app;进入新特性引导页-》进入ta b B a rcontroller的首页,个人中心点击登陆——〉登陆页,用户名密码正确----》返回个人中心(保存用户名密码,请求用户数据,保存用户数据,保存登陆状态)刷新个人中心;

2.第二次启动app,---》进入ta b B a rcontroller的首页,从本地获取保存的数据(如果本地有用户名密码数据,就自动登陆,没有的话,在个人中新,就是未登陆状态),用token去获取相关数据,如果token过期,提示重新登陆或者自动从新登陆,,如果token没过期,点击个人中心时,请求相关数据,(用缓存数据)刷新个人中心页面;

3.第二次启动如果有新版本---进入新特性引导页-》进入ta b B a rcontroller的首页,从本地获取保存的数据,用token去获取相关数据,如果token过期,提示重新登陆或者自动从新登陆,,如果token没过期,点击个人中心时,请求相关数据,刷新跟人中心页面;

4.修改了登陆密码--》要更新本地缓存;

5.主动退出登陆---〉清空本地缓存;内存中的用户名密码和用户数据变为nil,同时更改登陆的状态;

6.登陆与退出主要设计的数据:用户名和密码,登陆的状态,用户的数据,token;

 

 

1.//这是登录控制器页面

- (void)viewDidLoad {

    [super viewDidLoad];

 

      //lt.iSNextAutoLogin是单利中的一个属性,用来保存下次是否自动登录

    //如果是第一次使用app登录,iSNextAutoLogin默认就时NO,之后有了缓存之后就从缓存中取iSNextAutoLogin的值

    LTUserInfo *lt=[LTUserInfo defaultUserInfo];

    NSUserDefaults *def=[NSUserDefaults standardUserDefaults];

    if([def boolForKey:@"iSNextAutoLogin"]==NO ||[def boolForKey:@"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 = [NSUserDefaults standardUserDefaults];

        if(![[tempDefaults objectForKey:@"LTUSERNAME"]isEqualToString:@""] &&![[tempDefaults objectForKey: @"LTUSERPASSWORD"]isEqualToString:@""]){

            self.userNameTF.text=[tempDefaults objectForKey:@"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 = [NSUserDefaults standardUserDefaults];

        [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实现自动登录。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值