用户登陆状态,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-10-08 00:00:51

用户登陆状态,ios开发用户登陆的相关文章

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

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

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

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

iOS开发实现登陆

Assumption假设:iOS端加载Web页,然后用户输入用户名密码登陆,WebServer会把用户登陆信息记载在Cookie.那么iOS客户端如何取到Cookie中的登陆信息. 客户端监听 NSHTTPCookieManagerCookiesChangedNotification. 当Web页登陆成功后,由于Cookie会变化,NSHTTPCookieManagerCookiesChangedNotification从Cookie中取出登陆信息,保存下来(keychain,或DOC下). 以

iOS开发--用户点击频繁,多个异步网络请求取消问题?

一.业务环境描述 当一个view同时添加两个tableView为subView的时候,两个tableView分别为mainTable和subTable. 当用户点击mainTable上的某一条数据时,再去发送网络请求subTable中的数据. 存在问题的地方:例如当用户在mainTable上频繁点击各条cell上面的数据时,会出现subTable中数据错乱问题.那么如何取消之前的网络请求呢??? 注:网络请求为异步请求 二.解决方法 1.实例化一个AFHTTPRequestOperationMa

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

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

iOS开发-私人通讯录-数据存储和编辑模式

UI界面 -(void)viewDidLoad{ [super viewDidLoad]: //addTarget:一般用于监听按钮的点击 以及进度条值的改变 //通过通知监听UITextField的改变 /* addObserver:谁来监听 selector:通知发生的时候调用什么方法 name:通知名称 object:谁发送的通知 注意:object不能写nil,因为如果是nil只要是UITextField发生改变都会调用textChange方法,而我们只在账号和密码输入框发生改变的时候才

学习ios开发就业工资

学习ios开发就业工资.移动互联时代的到来,让智能手机在全球范围内迅速普及,iOS作为最具代表性的移动互联操作系统,以其独有的优势获得用户认同.iOS开发人员短缺的现象让很多企业一筹莫展,转型移动互联靠拢iOS需要大量开发人才,iOS程序员已经成为炙手可热的开发人才,千锋iOS培训机构作为行业最具权威的iOS研发和人才培训基地,帮助大批学员高薪就业,能够拥有超出同行薪水的高薪资,千锋学员自然有拿高薪的诀窍,魔鬼式代码训练虽然艰苦但却是让学员经历模仿到创造必不可少的过程. iOS系统引领了移动互联

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

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

如何维持APP用户的登陆状态

一.一种方式 原文链接:http://ciniao.legu.cc/appcan/article_54.html 这个问题太过于常见,也过于简单,以至于大部分开发者根本没有关注过这个问题,我根据和我沟通的开发者中,总结出来常用的方法有以下几种: (个人觉得不简单么) 一:服务端默认的session 这种方式最大的优点是服务端不用增加任何代码,但APP与网站不同,通常情况下,我们会希望APP的登陆状态能维持数天,甚至数月之久,大部分的服务端程序,都会在进程重启时或客户端多久不活动时,将sessio