收藏官网首页
查看: 5527|回复: 0

iOS SDK 2.0文档 4-SDK流程之用户部分

563

主题

1222

帖子

8097

积分

版主

Rank: 7Rank: 7Rank: 7

积分
8097
发表于 2016-7-7 16:41:09 | 显示全部楼层 |阅读模式
注册成为机智云开发者,手机加虚拟设备快速开发
3.2.  用户部分机智云的用户系统包含了用户的注册、登录、重置密码、修改个人信息等功能,机智云以APPID区分用户系统,不同APPID的用户系统相互独立。更换APPID后,需要重新注册用户。
以下流程中涉及到的**注册方法是用子类继承基类的方式实现的。
3.2.1.   用户部分主要流程图
用户的注册方式有多种,比如手机号、普通用户名、邮箱等,APP可以根据需要采取不同的方式。其他流程比如登录、密码修改、个人信息修改等部分,请直接阅读下面的流程文档。
3.2.2.   用户注册机智云提供三种用户注册方式:手机注册、普通用户注册、邮箱注册。
3.2.2.1.    注册手机用户通过手机注册账号,需要一个有效的手机号。注册时需要两步操作:获取短信验证码、用短信验证码注册用户。
第一步:获取短信验证码。SDK向云端发送短信验证码请求,如果请求成功,云端会给手机发送短信验证码。
【示例代码】
1
2
3
4
5
6
7
8
9
10
11
[GizWifiSDK sharedInstance].delegate = self;
[[GizWifiSDK sharedInstance] requestSendPhoneSMSCode"your_app_secret" phone"your_phone_number"];

// 实现回调
- (void)wifiSDKGizWifiSDK *)wifiSDK didRequestSendPhoneSMSCodeNSError *)result tokenNSString *)token {
    if(result.code == GIZ_SDK_SUCCESS) {
            // 请求成功
    } else {
            // 请求失败
    }
}

第二步:用短信验证码注册。APP把手机收到的短信验证码传给SDK,填上手机号和密码就可以注册了。
【示例代码】
1
2
3
4
5
6
7
8
9
10
11
12
[GizWifiSDK sharedInstance].delegate = self;
[[GizWifiSDK sharedInstance] registerUser"your_phone_number" password"your_password" verifyCode"your_verify_code" accountType:GizUserPhone];

// 实现回调
- (void)wifiSDKGizWifiSDK *)wifiSDK didRegisterUserNSError *)result uidNSString *)uid tokenNSString *)token {
    if(result.code == GIZ_SDK_SUCCESS)
    {
            // 注册成功
    } else {
            // 注册失败
    }
}

3.2.2.2.    注册普通用户注册普通用户,使用用户名、密码即可创建一个账号。
【示例代码】
1
2
3
4
5
6
7
8
9
10
11
12
13
[GizWifiSDK sharedInstance].delegate = self;
[[GizWifiSDK sharedInstance] registerUser"your_user_name" password"your_password" verifyCode:nil accountType:GizUserNormal];

// 实现回调
- (void)wifiSDKGizWifiSDK *)wifiSDK didRegisterUserNSError *)result uidNSString *)uid token:(NSString *)token
{
    if(result.code == GIZ_SDK_SUCCESS) {
        // 注册成功
    } else {
         // 注册失败

    }
}

3.2.2.3.    注册邮箱用户通过有效的电子邮箱地址,注册一个账号。注册成功后,云端会给指定邮箱发送注册成功的邮件。
【示例代码】
1
2
3
4
5
6
7
8
9
10
11
[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,登录账号需要重新注册。
【示例代码】
1
2
3
4
5
6
7
8
9
10
11
[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是相同的。匿名用户登录时,如果账号不存在,系统会根据设备唯一标识码,生成一个匿名账号,并登录该账号。
【示例代码】
1
2
3
4
5
6
7
8
9
10
11
[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.    第三方账号登录目前支持的第三方账号有百度、新浪、腾讯。用户可以使用这三者的API获取到uid和token登录机智云,使用第三方账号登录时无需在机智云上注册,可直接登录。
开发者可通过新浪、百度或腾讯api获取uid和token, 具体方法请参考各第三方平台的开发者文档。也可以使用以下工具获取第三方账号uid、token:
ShareSDK http://mob.com/
BaiduSDK http://developer.baidu.com/wiki/index.php?title=%E5%B8%AE%E5%8A%A9%E6%96%87%E6%A1%A3%E9%A6%96%E9%A1%B5/%E7%99%BE%E5%BA%A6%E5%B8%90%E5%8F%B7%E8%BF%9E%E6%8E%A5
【示例代码】
1
2
3
4
5
6
7
8
9
10
11
12
// 以新浪账号为例
[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.    手机号重置密码手机号重置密码时,需要先获取短信验证码再重置。获取短信验证码方式与手机注册时相同。
第一步:获取短信验证码
【示例代码】
1
2
3
4
5
6
7
8
9
10
11
[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 {
        // 请求失败
    }
}

第二步:用短信验证码重置密码
【示例代码】
1
2
3
4
5
6
7
8
9
10
11
[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.    邮箱重置密码邮箱重置密码时,云端会给指定邮箱发送安全链接。用户需要到邮箱中查收邮件,并按邮件指示执行重置操作。重置密码邮件有可能进入用户的邮箱的垃圾箱中,需提醒用户。
邮件发送成功回调与密码修改成功回调一致,因此需要注意在回调的时候区分。
【示例代码】
1
2
3
4
5
6
7
8
9
10
11
[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.   修改密码用户登录后可以修改密码。
【示例代码】
1
2
3
4
5
6
7
8
9
10
11
[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就可以了。
【示例代码】
1
2
3
4
5
6
7
8
9
10
11
[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.6.2.    匿名用户转手机用户转手机用户时,需要填入待转换的手机号、密码、短信验证码,登录的token。获取短信验证码的过程与手机注册时一样。
【示例代码】
1
2
3
4
5
6
7
8
9
10
11
[GizWifiSDK sharedInstance].delegate = self;
[[GizWifiSDK sharedInstance] transAnonymousUser:@"your_token" username:@"your_phone_number" password:@"your_password" verifyCode:@"your_verify_code" accountType:GizUserPhone];

// 实现回调
- (void)wifiSDK:(GizWifiSDK *)wifiSDK didTransAnonymousUser:(NSError *)result {
    if(result.code == GIZ_SDK_SUCCESS) {
        // 转换成功
    } else {
        // 转换失败
    }
}

3.2.7.   修改用户信息实名用户不支持修改普通用户名,可以修改邮箱、手机号,可以补充个人信息。实名用户必须登录后才能修改这些信息,并且待修改的邮箱或手机号必须是已经注册过的。
实名用户修改邮箱或手机号成功后,可以使用修改后的邮箱或手机号登录。登录后获得的绑定设备列表与原实名用户一致。
修改邮箱或手机号时,可以同时补充个人信息。不想修改个人信息时,对应参数可以传nil。同时修改个人信息时,如果邮箱或用户名修改成功而个人信息修改失败,回调会返回成功并在errorMessage中提示个人信息修改失败的原因。
3.2.7.1.    修改用户邮箱只修改用户邮箱时,个人信息的参数传nil,用户类型可以指定为邮箱用户。以下为修改用户邮箱的示例代码。
【示例代码】
1
2
3
4
5
6
7
8
9
10
11
[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,用户类型可以指定为手机用户。修改手机号之前,需要先获取手机验证码。以下示例代码为修改用户手机号的代码,获取短信验证码的代码请参考手机号注册。
【示例代码】
1
2
3
4
5
6
7
8
9
10
11
[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,云端会保留上次修改过的值。
【示例代码】
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[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.    同时修改邮箱和个人信息修改邮箱同时修改个人信息时,用户类型需指定为邮箱用户。
【示例代码】
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[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.    同时修改手机号和个人信息修改手机号同时修改个人信息时,用户类型需指定为手机用户。修改手机号同样需要先获取手机验证码,获取短信验证码的代码请参考手机号注册。
【示例代码】
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[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 {
        // 修改失败
    }
}


1、机智云QQ群: 287087942
机智云爱好者-APP开发群: 599735135
QQ群目前非常活跃,欢迎大家参与进来,交流,讨论,答疑,解惑~~
2、机智云微信公众号: 机智云 gizwits /   机智云智能宠物屋go-kit
关注机智云Gizwits官方公众号随时掌握最新资讯和活动信息
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

加入Q群 返回顶部

版权与免责声明 © 2006-2024 Gizwits IoT Technology Co., Ltd. ( 粤ICP备11090211号 )

快速回复 返回顶部 返回列表