当前位置:首页 > Ios > iOS应用开发之登录注册

iOS应用开发之登录注册

引言

现在我们在做开发的时候,基本上现在的每一款app都有登录功能。那也就少不了注册,找回密码等操作。今天要说的就是初学者可以使用parse做为后台的服务器来进行一系列的操作,等以后工作的时候可以用公司的服务器。

苹果开发

我们就先从注册用户开始吧

1
2
3
4
5
6
7
8
9
10
11
12
BmobUser *bUser = [[BmobUser alloc] init];
[bUser setUserName:@"小明"];//必填
[bUser setPassword:@"123456"];//必填
[bUser setObject:@18 forKey:@"age"];//选填
[bUser setEmail:@"123456789@qq.com]"//必填
[bUser signUpInBackgroundWithBlock:^ (BOOL isSuccessful, NSError *error){
    if (isSuccessful){
        NSLog(@"Sign up successfully");
    } else {
        NSLog(@"%@",error);
    }
}];

有些时候你可能需要在用户注册时发送一封邮件,以确认用户邮箱的真实性。这时,你只需要登录自己的应用管理后台,在应用设置->邮件设置(下图)中把“邮箱验证”功能打开,Bmob云后端就会在用户注册时自动发动一封验证给用户。
username字段是大小写敏感的字段,如果你希望应用的用户名不区分大小写,请在注册登录时进行大小写的统一转换。

接下来就是用户登录了

1
2
3
4
5
6
7
8
9
10
[BmobUser loginWithUsernameInBackground:@"小明"
    password:@"123456" block:^(BmobUser *user, NSError *error) {
        if (user) {
            [self showMessage:@"登录成功"];
        }
 
        if (error) {
            [self showMessage:@"用户名或者密码错误"];
        }
    }];];

获取当前用户

1
2
3
4
5
6
7
8
9
BmobUser *bUser = [BmobUser getCurrentObject];
if (bUser) {
    //进行操作
}else{
    //对象为空时,可打开用户注册界面
}
当然,你也可以用如下的方法清除缓存用户对象:
 
[BmobUser logout];

更新用户资料

1
2
3
4
5
6
BmobUser *bUser = [BmobUser getCurrentUser];
//更新number为30
[bUser setObject:@30 forKey:@"number"];
[bUser updateInBackgroundWithResultBlock:^(BOOL isSuccessful, NSError *error) {
    NSLog(@"error %@",[error description]);
}];

在更新用户信息时,如果用户邮箱有变更并且在管理后台打开了邮箱验证选项的话,Bmob云后端同样会自动发动一封邮件验证信息给用户。

旧密码重置密码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
BmobUser *user = [BmobUser getCurrentUser];
    [user updateCurrentUserPasswordWithOldPassword:@"old password" newPassword:@"new password" block:^(BOOL isSuccessful, NSError *error) {
        if (isSuccessful) {
            //用新密码登录
            [BmobUser loginInbackgroundWithAccount:@"name" andPassword:@"new password" block:^(BmobUser *user, NSError *error) {
                if (error) {
                    NSLog(@"login error:%@",error);
                } else {
                    NSLog(@"user:%@",user);
                }
            }];
        } else {
            NSLog(@"change password error:%@",error);
        }
    }];

邮箱重置密码

1
[BmobUser requestPasswordResetInBackgroundWithEamil:@"xxxx@qq.com"];

密码重置流程如下:

  • 用户输入他们的电子邮件,请求重置自己的密码。
  • Bmob向他们的邮箱发送一封包含特殊的密码重置连接的电子邮件。
  • 用户根据向导点击重置密码连接,打开一个特殊的Bmob页面,根据提示,他们可以输入一个新的密码。
  • 用户的密码已被重置为新输入的密码。

邮箱验证

1
2
3
4
5
6
7
8
BmobUser *user = [BmobUser getCurrentUser];
//应用开启了邮箱验证功能
if ([user objectForKey:@"emailVerified"]) {
    //用户没验证过邮箱
    if (![[user objectForKey:@"emailVerified"] boolValue]) {
        [user verifyEmailInBackgroundWithEmailAddress:@"xxxxxxxxxx"];
    }
}

手机注册登录,一键注册登录

1
2
3
4
5
6
7
[BmobUser signOrLoginInbackgroundWithMobilePhoneNumber:mobilePhoneNumber andSMSCode:smsCode block:^(BmobUser *user, NSError *error) {
        if (user) {
            NSLog(@"%@",user);
        } else {
            NSLog(@"%@",error);
        }
}];

如果希望在用手机注册时为用户添加密码或者其它信息,可以使用以下代码实现:

1
2
3
4
5
6
7
8
9
10
11
12
BmobUser *buser = [[BmobUser alloc] init];
    buser.mobilePhoneNumber = @"15123456789";
    buser.password = @"123";
    buser.email = @"xxx@gmail.com"
    [buser signUpOrLoginInbackgroundWithSMSCode:@"6位验证码" block:^(BOOL isSuccessful, NSError *error) {
        if (error) {
            NSLog(@"%@",error);
        } else {
            BmobUser *user = [BmobUser getCurrentUser];
            NSLog(@"%@",[BmobUser getCurrentUser]);
        }
    }];

帐号密码登录

1
2
3
4
5
6
7
[BmobUser loginInbackgroundWithAccount:account andPassword:password block:^(BmobUser *user, NSError *error) {
        if (user) {
            NSLog(@"%@",user);
        } else {
            NSLog(@"%@",error);
        }
    }];

手机号验证码登录

1
2
3
4
5
6
7
[BmobUser loginInbackgroundWithMobilePhoneNumber:mobilePhoneNumber andSMSCode:smsCode block:^(BmobUser *user, NSError *error) {
        if (user) {
            NSLog(@"%@",user);
        } else {
            NSLog(@"%@",error);
        }
    }];

手机验证码重置密码

1
2
3
4
5
6
7
[BmobUser resetPasswordInbackgroundWithSMSCode:smsCode andNewPassword:newPassword block:^(BOOL isSuccessful, NSError *error) {
        if (isSuccessful) {
            NSLog(@"%@",@"重置密码成功");
        } else {
            NSLog(@"%@",error);
        }
    }];

绑定手机号

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
26
27
28
29
30
31
//验证
    [BmobSMS verifySMSCodeInBackgroundWithPhoneNumber:mobilePhoneNumber andSMSCode:smsCode resultBlock:^(BOOL isSuccessful, NSError *error) {
        if (isSuccessful) {
            //修改绑定手机
            BmobUser *buser = [BmobUser getCurrentUser];
            buser.mobilePhoneNumber = mobilePhoneNumber;
            [buser setObject:[NSNumber numberWithBool:YES] forKey:@"mobilePhoneNumberVerified"];
            [buser updateInBackgroundWithResultBlock:^(BOOL isSuccessful, NSError *error) {
                if (isSuccessful) {
                    NSLog(@"%@",buser);
                } else {
                    NSLog(@"%@",error);
                }
            }];
 
        } else {
            NSLog(@"%@",error);
        }
    }];
<.pre>
 
请求发送短信内容
 
<pre lang="c">
[BmobSMS requestSMSInbackgroundWithPhoneNumber:@"phoneNumber" Content:@"您的XX服务还有XX时间到期,请及时续费。" andSendTime:@"2015-07-01 10:59:00" resultBlock:^(int number, NSError *error) {
        if (error) {
            NSLog(@"%@",error);
        } else {
            NSLog(@"smsId:%d",number);
        }
    }];

苹果开发

获取短信验证码

1
2
3
4
5
6
7
8
9
//请求验证码
    [BmobSMS requestSMSCodeInBackgroundWithPhoneNumber:mobilePhoneNumber andTemplate:@"test" resultBlock:^(int number, NSError *error) {
        if (error) {
            NSLog(@"%@",error);
        } else {
            //获得smsID
            NSLog(@"sms ID:%d",number);
        }
    }];

验证短信验证码

1
2
3
4
5
6
7
8
9
10
//验证
    [BmobSMS verifySMSCodeInBackgroundWithPhoneNumber:mobilePhoneNumber andSMSCode:smsCode resultBlock:^(BOOL isSuccessful, NSError *error) {
        if (isSuccessful) {
            NSLog(@"%@",@"验证成功,可执行用户请求的操作");
        } else {
            NSLog(@"%@",error);
        }
    }];
 
}

总结

虽然代码量有点多,但是逻辑不是很难,如果能够按照我的代码来的话,这一套用户的登录和注册应该可以搞定。

  • << 自己动手封装javaBean
  • 死锁-简单介绍 >>
  • 作者:
    除非注明,本文原创:知道91,欢迎转载!转载请以链接形式注明本文地址,谢谢。
    原文链接:http://www.zhidao91.com/ios-login/

    相关文章 近期热评 最新文章

    • 深入浅出苹果开发Swift
      Swift,苹果于2014年WWDC(苹果开发者大会)发布的新开发语言,可与Objective-C*共同运行于Mac OS和iOS平台,用于搭建基于苹果平台的应用程序。
    • iOS开发-应用跳转及通信
      iOS是由苹果公司开发的移动操作系统,OS与苹果的Mac OS X操作系统一样,属于类Unix的商业操作系统。原本这个系统名为iPhone OS.
    • iOS多线程简学习
      每一个运行在系统中的应用程序,都有一个进程。进程是独立的,有着自己专属运行空间。进程的出现是为了解决多任务处理系统的问题。
    • Objective-C多态学习
      简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针。多态性在Object Pascal和C++中都是通过虚函数(Virtual Function) 实现的。
    • 怎样在WordPress中安装Google Analytics
      就算你积累了多年网站建设的经验,你都不可能一开始就建一个外观,速度,功能以及转化都很完美的网站。你能做的并且也是各个站长正在做的,无非是通过不断的监测来改进...
    • 怎样在WordPress中安装Google Analytics
      就算你积累了多年网站建设的经验,你都不可能一开始就建一个外观,速度,功能以及转化都很完美的网站。你能做的并且也是各个站长正在做的,无非是通过不断的监测来改进...
    • oracle数据库相关操作注意事项
      修改Oracle SGA(共享内存) 很多网站说修改Oracle的内存通过命令 如果你这么做了,那么恭喜你,你的Oracle数据库无法启动了。如果你已经这么做了,恢复Oracle启动的方...
    • 使用微信JDK实现微信接口签名验证
      要使用微信的接口必须在绑定的域名下测试;签名必须先向微信请求到access_token,然后用access_token再去请求jsapi_ticket,最后用jsapi_ticket和相关的参数按照ASCII码...
    • ABP开发指南系列教程(2) – 多层架构...
      为了减少复杂性和提高代码的可重用性,采用分层架构是一种被广泛接受的技术。为了实现分层的体系结构,ABP遵循DDD(领域驱动设计)的原则,将工程分为四个层: 展现层(...
    • ABP开发指南系列教程(1) – 入...
      ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)”的简称。 ASP.NET Boilerplate是一个用最佳实践和流行技术开发现代WEB应用程序的新起点,它旨在成为一个通用的WE...
    • Windows下 JIRA + Agile + Mysql 破解...
      本文讲述了Windows下 JIRA + Agile + Mysql 破解安装示例教程