专栏首页青玉伏案IOS开发之记录用户登陆状态

IOS开发之记录用户登陆状态

  上一篇博客中提到了用CoreData来进行数据的持久化,CoreData的配置和使用步骤还是挺复杂的。但熟悉CoreData的使用流程后,CoreData还是蛮好用的。今天要说的是如何记录我们用户的登陆状态。例如微信,QQ等,在用户登陆后,关闭应用在打开就直接登陆了。那么我们在App开发中如何记录用户的登陆状态呢?之前在用PHP或者Java写B/S结构的东西的时候,我们用Session来存储用户的登陆信息,Session是存在服务器上仅在一次回话中有效,如果要记录用户的登陆状态,那么会用到一个叫Cookie的东西。Cookie和Session不同,Cookie是存在用户本地的一个文件,Cookie中存的就是用户的登陆信息,当用户在此登陆时,自动从Cookie中读取用户的登陆信息。

  不扯Web的啦,在我们App开发中同样也遇到这要的问题,如何记录用户的登陆状态呢? 用我们的CoreData蛮? CoreData适合处理大量的数据,一般和TableView来结合起来使用,当然我们可以用CoreData来存储用户的登陆信息,但这不免有点大材小用,而且用起来也是比较复杂的。那么我们有其他更便捷的方法吗?苹果这么注重用户体验,当然有其他的方法了,就是NSUserDefault. NSUserDefault设置完值以后要进行同步

  NSUserDefault是苹果提供给我们用来存储用户的登陆信息的一个类,当然是持久化的了,废话不多说了。我们就模拟一个用户登陆和注销的demo来学习一下如何使用NSUserDefault来存储用户的登陆信息。

  1.首先我们得有一个登陆页面对应的类为ViewController.h, 在登陆页面有两个TextField和一个Button用来接受用户的输入,在点击Button中的回调的方法中,如果用户登陆成功,则把用户信息存入UserDefault中,然后以模态的方式来跳转到主界面,首先我们要获取UserDefault的单例,登陆页面中的登陆按钮回调的方法代码如下:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

- (IBAction)tapLogin:(id)sender {           //获取用户输入的信息     NSString *username = self.usernameTextField.text;     NSString *password = self.passwordTextField.text;           //对用户信息的验证     if ([username isEqualToString:password]){         //获取userDefault单例         NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];                   //登陆成功后把用户名和密码存储到UserDefault         [userDefaults setObject:username forKey:@"name"];         [userDefaults setObject:password forKey:@"password"];          [userDefaults synchronize];         //用模态跳转到主界面         UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]];                   id mainViewController = [storyboard instantiateViewControllerWithIdentifier:@"MainView"];                   [self presentViewController:mainViewController animated:YES completion:^{         }];     }       }

  2.处理完登陆页面,我们会处理根据UserDefault中的name属性是否有值来选择加载哪个页面。在storybaord中我们默认的是主界面,在AppDelegate.m中如果未登陆,我们会设置一下rootViewController,代码如下

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

//判断是否登陆,由登陆状态判断启动页面 //获取UserDefault NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults]; NSString *name = [userDefault objectForKey:@"name"];   //获取storyboard UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]];   //如果用户未登陆则把根视图控制器改变成登陆视图控制器 if (name == nil) {     NSLog(@"%@",name);     id view = [storyboard instantiateViewControllerWithIdentifier:@"LoginView"];     self.window.rootViewController = view; }

  3.经过上面的代码我们就可以根据用户登陆状态来选择加载的信息,在登陆后的页面中,我们添加一个按钮,用来退出。在退出按钮回调的方法中,我们需要把之前保存的用户信息进行remove掉,同时用模态的方式来跳转到登陆页面,代码如下:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18

- (IBAction)tapLoginOut:(id)sender {           //获取UserDefaults单例     NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];           //移除UserDefaults中存储的用户信息     [userDefaults removeObjectForKey:@"name"];     [userDefaults removeObjectForKey:@"password"];      [userDefaults synchronize];     //获取storyboard     UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]];           //获取注销后要跳转的页面     id view = [storyboard instantiateViewControllerWithIdentifier:@"LoginView"];           //模态展示出登陆页面     [self presentViewController:view animated:YES completion:^{     }];

  下面的截图是在storyboard中的截图,运行出的效果和下面一样,到此我们就可以实现记录用户的登陆状态了

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • JavaEE开发之基于Eclipse的环境搭建以及Maven Web App的创建

    本篇博客就完整的来聊一下如何在Eclipse中创建的Maven Project。本篇博客是JavaEE开发的开篇,也是基础。本篇博客的内容干货还是比较多的,而且...

    lizelu
  • 算法与数据结构(十六) 快速排序(Swift 3.0版)

     上篇博客我们主要聊了比较高效的归并排序算法,本篇博客我们就来介绍另一种高效的排序算法:快速排序。快速排序的思想与归并排序类似,都是采用分而治之的方式进行排序的...

    lizelu
  • TCP/IP协议族(三) 数字签名与HTTPS详解

    前面几篇博客聊了HTTP的相关东西,今天就来聊一聊HTTPS的东西。因为HTTP协议本身存在着明文传输、不能很好的验证通信方的身份和无法验证报文的完整性等一些安...

    lizelu
  • 【运营者】腾讯内部产品课,细分用户画像

    QQ是一条大河,微信是一条大河,百度是一条大河,百度贴吧也是一条大河……大河所过,形成自己的生态,巩固自己的水土。

    曾响铃
  • 百万运营人员每天关注的数据指标,你想知道吗?

    软件及移动应用类产品常用指标 新增用户数 New Users 指首次打开应用的用户数量,通常通过设备识别符(如苹果系统的UDID)来识别用户的唯一身份。由于传输...

    灯塔大数据
  • App推广必读:怎样通过统计工具来评估渠道的用户质量

    百度搜索“应用推广联盟”有超过搜索七千万的结果。渠道数量过多,鱼龙混杂,想要挑选出合适的优质渠道,却不容易。甚至有开发者曾经吐槽“数万元推广费用,获得上万激活量...

    用户1756920
  • 【新技能 Get】程序猿需必备基础的运营数据

    前两天有个用户反馈,应用在更新时会自动下载安装某些应用,怀疑与 Bugly 有关。经过分析,原来是 apk 地址被劫持,强制换成应用的下载地址。在这里,腾讯Bu...

    腾讯Bugly
  • 【读书笔记】《增长黑客》创业公司的用户与收入增长秘籍

    这本书是去年女朋友买来送给我的,我断断续续地看着,最近终于看完了,现在来说说我的读后感。

    爱吃西瓜的番茄酱
  • 电商网站分析实践(中)

    第二部分:从产品放入购物车到订单达成 用户已选择好了产品并放入到购物车中,这时我们的任务就是保证用户购买支付的流程可以尽量流畅,使得尽量多的用户可以到达订单达成...

    小莹莹
  • Linux 中用户与权限管理

    root 用户的 UID 为 0,UID 即 User IDentification。

    wsuo

扫码关注云+社区

领取腾讯云代金券