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

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中的截图,运行出的效果和下面一样,到此我们就可以实现记录用户的登陆状态了

  

ios开发中怎记录程序退出的时间

你所说的程序退出是退出进程还是按home键退到后台
如果是前者,还真没有什么招来记录
如果是后者,在appdelegate里有个代理方法applicationDidEnterBackground,当按home后,该方法触发

ios开发,怎保存用户名密码

上传服务器保存。。本地plist保存。。Userdefault保存。。sqlite保存

时间: 2024-08-08 12:48:11

IOS开发之记录用户登陆状态,ios开发用户登陆的相关文章

IOS 记录用户登陆状态 第二次免登陆

NSUserDefault是苹果提供给我们用来存储用户的登陆信息的持久化类.下面用实例看下记录登陆状态的过程 首先创建用于存取用户信息的方法类 HRAccountTool.h: #import <Foundation/Foundation.h> @interface HRAccountTool : NSObject /** * 存储账号信息 * @param account 需要存储的账号信息:第一个值为用户名:第二个值为密码 */ + (void)saveAccount:(NSArray *

python如何保持登陆状态的简单现实

洒家不是程序员只是分享一个思路,前段时间洒家无意中尝试上如何用python保持手工登陆网站的 状态,当登陆某个论坛时,是用cookie值来识别用户身份的,只要这个cookie值没有失效,就可以 长期登陆状态. 用python保持登陆状态的思路: 手工登陆论坛 用火狐抓包插件httofox获取cookie值 python传送得到的cookie值 以下是python实现代码 import urllib,urllib2 cj = '获取的cookie' url = '请求页面' user = 'Moz

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

今天要说的是如何记录我们用户的登陆状态.例如微信,QQ等,在用户登陆后,关闭应用在打开就直接登陆了.那么我们在App开发中如何记录用户的登陆状态呢?之前在用PHP或者Java写B/S结构的东西的时候,我们用Session来存储用户的登陆信息,Session是存在服务器上仅在一次回话中有效,如果要记录用户的登陆状态,那么会用到一个叫Cookie的东西.Cookie和Session不同,Cookie是存在用户本地的一个文件,Cookie中存的就是用户的登陆信息,当用户在此登陆时,自动从Cookie中

用户登陆状态,ios开发用户登陆

IOS开发之记录用户登陆状态,ios开发用户登陆 上一篇博客中提到了用CoreData来进行数据的持久 化,CoreData的配置和使用步骤还是挺复杂的.但熟悉CoreData的使用流程后,CoreData还是蛮好用的.今天要说的是如何记录我们用户 的登陆状态.例如微信,QQ等,在用户登陆后,关闭应用在打开就直接登陆了.那么我们在App开发中如何记录用户的登陆状态呢?之前在用PHP或者 Java写B/S结构的东西的时候,我们用Session来存储用户的登陆信息,Session是存在服务器上仅在一

如何在iOS中构建实时用户的状态更新

在构建聊天应用程序时,看到朋友的列表和朋友的状态并不少见.像WhatsApp这样的应用程序具有此功能,检查您的朋友的状态非常有用,并知道在那时向他们发送消息是否明智. 我们将在一个虚构的iOS聊天应用程序中构建一个类似的功能.我们将使用Pusher为应用程序实现实时功能,以便当有人发布新状态更新时,您可以实时看到它发生变化.这里是我们完成应用程序后的画面记录. 要遵循本文,您必须具备以下要求: 有关Swift 3的一些知识? 有关如何使用Xcode的?知识? 基本JavaScript知识-?安装

iOS开发多线程篇—线程的状态

iOS开发多线程篇—线程的状态 一.简单介绍 线程的创建: self.thread=[[NSThread alloc]initWithTarget:self selector:@selector(test) object:nil]; 说明:创建线程有多种方式,这里不做过多的介绍. 线程的开启: [self.thread start]; 线程的运行和阻塞: (1)设置线程阻塞1,阻塞2秒 [NSThread sleepForTimeInterval:2.0]; (2)第二种设置线程阻塞2,以当前时

iOS开发多线程篇—线程的状态 - 文顶顶

原文  http://www.cnblogs.com/wendingding/p/3807184.html iOS开发多线程篇-线程的状态 一.简单介绍 线程的 创建 : self.thread=[[NSThread alloc]initWithTarget:self selector:@selector(test) object:nil]; 说明:创建线程有多种方式,这里不做过多的介绍. 线程的 开启 : [self.thread start]; 线程的 运行 和 阻塞 : (1)设置线程阻塞

IOS开发学习记录第4天之C语言学习

(一).今天我们要学习的主要包括一下内容: 1.标示符概念及其命名原则  在C语言中,符号常量,变量,数组,函数等都需要一定的名称,我们把这种名称称之为标识符.  标识符划分:关健字.预定义标识符和用户标识符  命名规则: (1).只能由字母.数字.下划线或者美元符号($)组成 (2).不能以数字开头 (3).不能与关健字重名 (4).严格区分大小写  命名规范: (1).起一个有意义的名字(比如用户名:userName) (2).驼峰命名(如果一个名称有多个单词组成,第一个单词首字母小写其他单

【iOS开发必收藏】详解iOS应用程序内使用IAP/StoreKit付费、沙盒(SandBox)测试、创建测试账号流程!【2012-12-11日更新获取”产品付费数量等于0的问题”】

转的别人的 看到很多童鞋问到,为什么每次都返回数量等于0?? 其实有童鞋已经找到原因了,原因是你在 ItunesConnect 里的 “Contracts, Tax, and Banking”没有完成设置账户信息. 确定 ItunesConnect 里 “Contracts, Tax, and Banking”的状态,如下图所示,即可: 这里也是由于Himi疏忽的原因没有说明,这里先给童鞋们带来的麻烦,致以歉意. //——2012-6-25日更新iap恢复 看到很多童鞋说让Himi讲解如何恢复i