3.2. 用户部分 机智云的用户系统包含了用户的注册、登录、重置密码、修改个人信息等功能,机智云以APPID区分用户系统,不同APPID的用户系统相互独立。更换APPID后,需要重新注册用户。
以下流程中涉及到的**注册方法是用子类继承基类的方式实现的。 3.2.1. 用户部分主要流程图用户的注册方式有多种,比如手机号、普通用户名、邮箱等,APP可以根据需要采取不同的方式。其他流程比如登录、密码修改、个人信息修改等部分,请直接阅读下面的流程文档。 3.2.2. 用户注册机智云提供三种用户注册方式:手机注册、普通用户注册、邮箱注册。 3.2.2.1. 注册手机用户通过手机注册账号,需要一个有效的手机号。注册时需要两步操作:获取短信验证码、用短信验证码注册用户。
第一步:获取短信验证码。SDK向云端发送短信验证码请求,如果请求成功,云端会给手机发送短信验证码。
【示例代码】 - [GizWifiSDK sharedInstance].delegate = self;
- [[GizWifiSDK sharedInstance] requestSendPhoneSMSCode:@"your_app_secret" phone:@"your_phone_number"];
-
- // 实现回调
- - (void)wifiSDK:(GizWifiSDK *)wifiSDK didRequestSendPhoneSMSCode:(NSError *)result token:(NSString *)token {
- if(result.code == GIZ_SDK_SUCCESS) {
- // 请求成功
- } else {
- // 请求失败
- }
- }
复制代码第二步:用短信验证码注册。APP把手机收到的短信验证码传给SDK,填上手机号和密码就可以注册了。
【示例代码】 - [GizWifiSDK sharedInstance].delegate = self;
- [[GizWifiSDK sharedInstance] registerUser:@"your_phone_number" password:@"your_password" verifyCode:@"your_verify_code" accountType:GizUserPhone];
-
- // 实现回调
- - (void)wifiSDK:(GizWifiSDK *)wifiSDK didRegisterUser:(NSError *)result uid:(NSString *)uid token:(NSString *)token {
- if(result.code == GIZ_SDK_SUCCESS)
- {
- // 注册成功
- } else {
- // 注册失败
- }
- }
复制代码 3.2.2.2. 注册普通用户注册普通用户,使用用户名、密码即可创建一个账号。
【示例代码】 - [GizWifiSDK sharedInstance].delegate = self;
- [[GizWifiSDK sharedInstance] registerUser:@"your_user_name" password:@"your_password" verifyCode:nil accountType:GizUserNormal];
-
- // 实现回调
- - (void)wifiSDK:(GizWifiSDK *)wifiSDK didRegisterUser:(NSError *)result uid:(NSString *)uid token:(NSString *)token
- {
- if(result.code == GIZ_SDK_SUCCESS) {
- // 注册成功
- } else {
- // 注册失败
-
- }
- }
复制代码 3.2.2.3. 注册邮箱用户通过有效的电子邮箱地址,注册一个账号。注册成功后,云端会给指定邮箱发送注册成功的邮件。
【示例代码】 - [GizWifiSDK sharedInstance].delegate = self;
- [[GizWifiSDK sharedInstance] registerUser:@"your_email_address" password:@"your_password" verifyCode:nil accountType:GizUserEmail];
-
- // 实现回调
- - (void)wifiSDK:(GizWifiSDK *)wifiSDK didRegisterUser:(NSError *)result uid:(NSString *)uid token:(NSString *)token {
- if(result.code == GIZ_SDK_SUCCESS) {
- // 注册成功
- } else {
- // 注册失败
- }
- }
复制代码 3.2.3. 用户登录机智云提供三种用户登录方式:实名登录、匿名登录、第三方账号登录。实名登录适用于设计了登录界面,必须使用用户名密码注册登录以后才能使用的APP。匿名登录适用于没有设计登录界面,由后台自动生成用户账号的APP。登录后获取到的token有效期为7天。 3.2.3.1. 实名登录实名用户登录时,用户名可以是注册过的手机号、邮箱、普通用户名。登录账号要先注册好,如果更换了AppID,登录账号需要重新注册。
【示例代码】 - [GizWifiSDK sharedInstance].delegate = self;
- [[GizWifiSDK sharedInstance] userLogin:@"your_user_name" password:@"your_user_password"];
-
- // 实现回调
- - (void)wifiSDK:(GizWifiSDK *)wifiSDK didUserLogin:(NSError *)result uid:(NSString *)uid token:(NSString *)token {
- if(result.code == GIZ_SDK_SUCCESS) {
- // 登录成功
- } else {
- // 登录失败
- }
- }
复制代码 3.2.3.2. 匿名登录用户每次匿名登录时,获取到的uid是相同的。匿名用户登录时,如果账号不存在,系统会根据设备唯一标识码,生成一个匿名账号,并登录该账号。
【示例代码】 - [GizWifiSDK sharedInstance].delegate = self;
- [[GizWifiSDK sharedInstance] userLoginAnonymous];
-
- // 实现回调
- - (void)wifiSDK:(GizWifiSDK *)wifiSDK didUserLogin:(NSError *)result uid:(NSString *)uid token:(NSString *)token {
- if(result.code == GIZ_SDK_SUCCESS) {
- // 登录成功
- } else {
- // 登录失败
- }
- }
复制代码 3.2.3.3. 第三方账号登录- // 以新浪账号为例
- [GizWifiSDK sharedInstance].delegate = self;
- [[GizWifiSDK sharedInstance] userLoginWithThirdAccount:GizThirdSINA uid:@"your_third_uid" token:@"your_third_token"];
-
- // 实现回调
- - (void)wifiSDK:(GizWifiSDK *)wifiSDK didUserLogin:(NSError *)result uid:(NSString *)uid token:(NSString *)token {
- if(result.code == GIZ_SDK_SUCCESS) {
- // 登录成功
- } else {
- // 登录失败
- }
- }
复制代码 3.2.4. 重置密码如果忘记了用户密码,可以通过手机验证码或邮箱设置新的密码。SDK支持手机号重置密码和邮箱重置密码两种,手机号重置需要接收验证码,邮箱重置需要进⼊邮箱,根据链接提示进行重置。 3.2.4.1. 手机号重置密码手机号重置密码时,需要先获取短信验证码再重置。获取短信验证码方式与手机注册时相同。
第一步:获取短信验证码
【示例代码】 - [GizWifiSDK sharedInstance].delegate = self;
- [[GizWifiSDK sharedInstance] requestSendPhoneSMSCode:@"your_app_secret" phone:@"your_phone_number"];
-
- // 实现回调
- - (void)wifiSDK:(GizWifiSDK *)wifiSDK didRequestSendPhoneSMSCode:(NSError *)result token:(NSString *)token {
- if(result.code == GIZ_SDK_SUCCESS) {
- // 请求成功
- } else {
- // 请求失败
- }
- }
复制代码第二步:用短信验证码重置密码
【示例代码】 - [GizWifiSDK sharedInstance].delegate = self;
- [[GizWifiSDK sharedInstance] resetPassword:@"your_phone_number" verifyCode:@"your_verify_code" newPassword:@"your_new_password" accountType:GizUserPhone];
-
- // 实现回调
- - (void)wifiSDK:(GizWifiSDK *)wifiSDK didChangeUserPassword:(NSError *)result {
- if(result.code == GIZ_SDK_SUCCESS) {
- // 修改成功
- } else {
- // 修改失败
- }
- }
复制代码 3.2.4.2. 邮箱重置密码邮箱重置密码时,云端会给指定邮箱发送安全链接。用户需要到邮箱中查收邮件,并按邮件指示执行重置操作。重置密码邮件有可能进入用户的邮箱的垃圾箱中,需提醒用户。
邮件发送成功回调与密码修改成功回调一致,因此需要注意在回调的时候区分。
【示例代码】 - [GizWifiSDK sharedInstance].delegate = self;
- [[GizWifiSDK sharedInstance] resetPassword:@"your_email_address" verifyCode:nil newPassword:@"your_new_password" accountType:GizUserEmail];
-
- // 实现回调
- - (void)wifiSDK:(GizWifiSDK *)wifiSDK didChangeUserPassword:(NSError *)result {
- if(result.code == GIZ_SDK_SUCCESS) {
- //重置密码邮件发送成功,提示用户查收
- } else {
- //重置密码邮件发送失败,弹出错误信息
- }
- }
复制代码
3.2.5. 修改密码用户登录后可以修改密码。
【示例代码】 - [GizWifiSDK sharedInstance].delegate = self;
- [[GizWifiSDK sharedInstance] changeUserPassword:@"your_token" oldPassword:@"your_old_password" newPassword:@"your_new_password"];
-
- // 实现回调
- - (void)wifiSDK:(GizWifiSDK *)wifiSDK didChangeUserPassword:(NSError *)result {
- if(result.code == GIZ_SDK_SUCCESS) {
- // 修改成功
- } else {
- // 修改失败
- }
- }
复制代码 3.2.6. 匿名用户转换匿名注册的用户可以转换为普通用户或者手机用户,转换后匿名用户的信息会转移到实名用户下,原匿名账号失效。但普通用户和手机用户必须是还未注册过的,已注册的用户名是无法转换的。 3.2.6.1. 匿名用户转普通用户转普通用户时,填入待转换的用户名、密码,以及登录的token就可以了。
【示例代码】 - [GizWifiSDK sharedInstance].delegate = self;
- [[GizWifiSDK sharedInstance] transAnonymousUser:@"your_token" username:@"your_user_name" password:@"your_password" verifyCode:nil accountType:GizUserNormal];
-
- // 实现回调
- - (void)wifiSDK:(GizWifiSDK *)wifiSDK didTransAnonymousUser:(NSError *)result {
- if(result.code == GIZ_SDK_SUCCESS) {
- // 转换成功
- } else {
- // 转换失败
- }
- }
复制代码 3.2.7. 修改用户信息实名用户不支持修改普通用户名,可以修改邮箱、手机号,可以补充个人信息。实名用户必须登录后才能修改这些信息,并且待修改的邮箱或手机号必须是已经注册过的。
实名用户修改邮箱或手机号成功后,可以使用修改后的邮箱或手机号登录。登录后获得的绑定设备列表与原实名用户一致。
修改邮箱或手机号时,可以同时补充个人信息。不想修改个人信息时,对应参数可以传nil。同时修改个人信息时,如果邮箱或用户名修改成功而个人信息修改失败,回调会返回成功并在errorMessage中提示个人信息修改失败的原因。 3.2.7.1. 修改用户邮箱只修改用户邮箱时,个人信息的参数传nil,用户类型可以指定为邮箱用户。以下为修改用户邮箱的示例代码。
【示例代码】 - [GizWifiSDK sharedInstance].delegate = self;
- [[GizWifiSDK sharedInstance] changeUserInfo:@"your_token" username:@"your_email_address" SMSVerifyCode:nil userType:GizUserEmail additionalInfo:nil];
-
- // 实现回调
- - (void)wifiSDK:(GizWifiSDK *)wifiSDK didChangeUserInfo:(NSError *)result {
- if(result.code == GIZ_SDK_SUCCESS) {
- // 修改成功
- } else {
- // 修改失败
- }
- }
复制代码 3.2.7.2. 修改用户手机号只修改用户手机号时,个人信息参数传nil,用户类型可以指定为手机用户。修改手机号之前,需要先获取手机验证码。以下示例代码为修改用户手机号的代码,获取短信验证码的代码请参考手机号注册。
【示例代码】 - [GizWifiSDK sharedInstance].delegate = self;
- [[GizWifiSDK sharedInstance] changeUserInfo:@"your_token" username:@"your_phone_number" SMSVerifyCode: @"your_verify_code" userType:GizUserPhone additionalInfo:nil];
-
- // 实现回调
- - (void)wifiSDK:(GizWifiSDK *)wifiSDK didChangeUserInfo:(NSError *)result {
- if(result.code == GIZ_SDK_SUCCESS) {
- // 修改成功
- } else {
- // 修改失败
- }
- }
复制代码 3.2.7.3. 修改用户个人信息只修改用户个人信息时,手机号或邮箱参数传nil,用户类型可以指定为普通用户。个人信息包含多项内容,通过GizUserInfo类指定。其中不想修改的信息填nil,云端会保留上次修改过的值。
【示例代码】 - [GizWifiSDK sharedInstance].delegate = self;
-
- GizUserInfo* additialInfo = new GizUserInfo();
- additialInfo.name = @"nickname";
- additialInfo.userGender = GizUserGenderMale;
- additialInfo.birthday = @"1990-1-1";
- additialInfo.address = @"Beijing";
- additialInfo.remark = @"home";
-
- [[GizWifiSDK sharedInstance] changeUserInfo:@"your_token" username:nil SMSVerifyCode:nil userType:GizUserNormal additionalInfo:additialInfo];
-
- // 实现回调
- - (void)wifiSDK:(GizWifiSDK *)wifiSDK didChangeUserInfo:(NSError *)result {
- if(result.code == GIZ_SDK_SUCCESS) {
- // 修改成功
- } else {
- // 修改失败
- }
- }
复制代码 3.2.7.4. 同时修改邮箱和个人信息修改邮箱同时修改个人信息时,用户类型需指定为邮箱用户。
【示例代码】 - [GizWifiSDK sharedInstance].delegate = self;
-
- GizUserInfo* additialInfo = new GizUserInfo();
- additialInfo.name = @"nickname";
- additialInfo.userGender = GizUserGenderMale;
- additialInfo.birthday = @"1990-1-1";
- additialInfo.address = @"Beijing";
- additialInfo.remark = @"home";
-
- [[GizWifiSDK sharedInstance] changeUserInfo:@"your_token" username:nil SMSVerifyCode:nil userType:GizUserEmail additionalInfo:additialInfo];
-
- // 实现回调
- - (void)wifiSDK:(GizWifiSDK *)wifiSDK didChangeUserInfo:(NSError *)result {
- if(result.code == GIZ_SDK_SUCCESS) {
- // 修改成功
- } else {
- // 修改失败
- }
- }
复制代码 3.2.7.5. 同时修改手机号和个人信息修改手机号同时修改个人信息时,用户类型需指定为手机用户。修改手机号同样需要先获取手机验证码,获取短信验证码的代码请参考手机号注册。
【示例代码】 - [GizWifiSDK sharedInstance].delegate = self;
-
- GizUserInfo* additialInfo = new GizUserInfo();
- additialInfo.name = @"nickname";
- additialInfo.userGender = GizUserGenderMale;
- additialInfo.birthday = @"1990-1-1";
- additialInfo.address = @"Beijing";
- additialInfo.remark = @"home";
-
- [[GizWifiSDK sharedInstance] changeUserInfo:@"your_token" username:@"your_phone_number" SMSVerifyCode: @"your_verify_code" userType:GizUserPhone additionalInfo:nil];
-
- // 实现回调
- - (void)wifiSDK:(GizWifiSDK *)wifiSDK didChangeUserInfo:(NSError *)result {
- if(result.code == GIZ_SDK_SUCCESS) {
- // 修改成功
- } else {
- // 修改失败
- }
- }
复制代码
|