新特SDK

作者: 高屋建瓴 | 来源:发表于2019-02-21 16:59 被阅读0次

概述

如果你想要接入新特的用户程序接口,可以通过接入该SDK快速访问新特的用户程序,接口包含了用户信息管理,用户登录注册,用户信息修改等功能模块,并对请求数据进行加密,对请求进操作进行了进一步的封装,SDK为每一个接口功能都提供了相应的方法,接入过程极其简单,只需配置简单的参数,将该url转交给SDK进行处理;无需接入者解析参数字段,接入者的服务端也无需改造。

SDK集成流程

1.把XTUserSDK.framework文件拷贝到项目文件夹下,并导入到项目工程中。
2.在需要调用AlipaySDK的文件中,增加头文件引用。

import <XTUserSDK/XTUserSDK.h>

3.点击项目名称,点击“Build Settings”选项卡,在搜索框中,以关键字“search”搜索,对“Header Search Paths”增加头文件路径:$(PROJECT_DIR)/SDK路径.../XTUserSDK.framework/Headers。如果头文件信息已增加,可不必再增加。

"$(PROJECT_DIR)/XTLogin/Lib/XTUserSDK.framework/Headers"

image.png

用户信息XTShareUserInfo

用户信息对象XTShareUserInfo是了登录成功后服务器返回的数据模型,对象提供了归档对数据进行了本地缓存,对外也提供了相应的方法对数据进行修改,删除,保存,更新功能。

公共参数

参数 类型 描述 示例值
refreshToken NSString 访问token失效后可能过refreshToken重新获取accessToken 2WZTA5kj...UIJbCdqGudOFGPoujTRA__
accessToken NSString 接口名称 2WZTA5kjTDRoclCR....oAhmfi4_
accept NSString 仅支持JSON JSON
addressCity NSString 城市代码 10001
addressCityDesc NSString 城市描述 伦敦
addressCountry String 国家代码,采用国际标准ISO 3166-1标准 CN
addressLine1 String 街道门牌号 查令大街84号
addressState String 省份代码 1.0
addressStateDesc String 省份描述 山东省
authInit String 是否实名认证 YES
avatarUrl String 用户头像 http://image.jpg
cardId String 证件号码 100021999090909999
cardType int 证件类型,1:身份证,3:护照,5:港奥通行证 1
dataComplete float 资料完成度 0.5
dateBirth long 生日 883584000000
education String 教育水平 大学本科
email String 邮箱 123@123.com
emailVerified bool 邮箱是否验证 YES
faceInit bool 是否启用刷脸登录 YES
gender String 性别 M:Male, F:Famale M
industry String 行业 计算机/互联网/通信
job String 职业 医生
langKey String 语言,采用国际标准ISO 639-1标准代码 zh_CN
level String 等级 1
loginType String 登录方式
mobile String 手机号 1700000000
mobileVerified bool 手机号否被验证 YES
nickName String 昵称 叶秋
introduction String 个人签名 个人签名
passwordInit bool 是否启用密码标识 YES
postCode String 邮政编码 672401
realName String 真实姓名 张三
referralCode int 推荐码 123243
securityInit bool 是否启用安全密码标识 YES
source String 登录平台 evonshine_app
userId String 用户编号 103610000032

获取用户信息单例对象

XTShareUserInfo * user = [XTShareUserInfo shareUserInfo];

可快速创建一个用户信息对象,如果对象在本地有缓存将直接读取本地数据进行初始化。

用户信息修改

我们可以对对象的部份变量直接赋值进行修改,如果需要删除用户信息可以通过resetUser重置用户信息
[user resetUser];

修改完成后可通过saveUser方法保存用户信息,对对象进行本地持久化。
[user saveUser]

重置用户信息,并持久化
[user clearnUser];

网络请求工具类XTRequestTool

为了满足服务端请求格式的要求,需要对请求头添加指定的参数,为了方便用户使用,已经将特定的参数封装到该类中,只需配置简单的参数即可创建,发起请求。并且对特殊的网络请求错误进行了特定的处理,如403token失效时,重新获取token,获取成功后重新发起之前的请求。

请求头设置

为了满足服务端请求格式的要求,需要对请求头添加指定的参数,为了方便用户使用,已经将特定的参数封装到该类中。接入时无需另行设置。

@"Content-Type": @"application/json;charset=UTF-8",
              @"Content-Encoding":@"gzip",//编码
              @"Device-Type":@"iOS",//设备类型
              @"Device-ID": deviceId,//设备惟一识别编码
              @"Device-Name":deviceName,//设备型号
              @"Device-DevOsName":deviceOsName,//系统名称
              @"Device-DevOsVersion":deviceOsVersion,//系统版本号
              @"Device-DevOsType":@"IOS",//设备系统分类: iOS、android
              @"Device-Network":network,//网络信号:wifi/gprs/3g/4g/5g
              @"AppVersion":isEmptyString(appVersion)?@"1.0":appVersion,// APP版本号
              @"source":XTShareAppSource, //平台
              @"Authorization":authorization //accessToken登录身份

创建请求

该类还提供了创建GET,POST,PUT,DELETE,HEAD请求并开启请求的方法

[XTRequestTool loadRequestWithUrl:url param:param httpMethod:XTShareHttpPut completionHandler:^(NSDictionary * _Nullable result, NSError * _Nullable error) {
        
}];

对常用的请求类型提供了方便方法

post请求

[XTRequestTool postRequestWithUrl:url param:param completionHandler:^(NSDictionary * _Nullable result, NSError * _Nullable error) {
        
}];

get请求

[XTRequestTool getRequestWithUrl:url param:param completionHandler:^(NSDictionary * _Nullable result, NSError * _Nullable error) {
        
}];

上传多张图片

[XTRequestTool uploadImagesRequestWithURL:url param:param images:images imageParameName:@""];

快捷访问接XTShareUserAPI

XTShareUserAPI提供了常用的方便的接口,可以重新获取token,获取验证码,登录,实名认证,修改用户信息等功能。
XTShareUserAPI是一个单例对象

[XTShareUserAPI shareUserApi];

获取验证码

该类提供了获取三种不同手机验证码的方法,登录验证码,重置密码验证码,绑定手机验证码。

获取手机登录或绑定手机号的验证码

[[XTShareUserAPI shareUserApi]loginOrBindingSendVerificationCodeWithMoblie:@"1700000000000" completionHandler:^(NSDictionary * _Nullable result, NSError * _Nullable error) {
        NSLog(@"发送验证码成功:%@",result[@"messgae"]);
}];

获取邮箱登录或绑定邮箱的验证码

[[XTShareUserAPI shareUserApi]loginOrBindingSendVerificationCodeWithEmail:@"ssd48343@163.com" completionHandler:^(NSDictionary * _Nullable result, NSError * _Nullable error) {
        
    }];

重置密码获取验证码

[[XTShareUserAPI shareUserApi]resetPasswordSendVerificationCodeWithMoblie:@"170000000" completionHandler:^(NSDictionary * _Nullable result, NSError * _Nullable error) {
        if (!error) {
            NSLog(@"发送成功");
        }else{
            NSLog(@"失败:%@",error);
        }
}];

自定义获取验证码

如果该类不能满足你的要求,下面还提供了获取更多类型的验证码方法

//登陆验证码
XTShareAppLoginMessageSeverId
//车控密码设置验证码
XTShareSetCarPasswordMessageSeverId
//预约短信验证
XTShareOrderMessageSeverId
//车控密码修改短信验证
XTShareUpdateCarPasswordMessageSeverId
//修改手机号旧手机短信验证
XTShareUpdatePasswordWithOldMessageSeverId
//修改手机号新手机短信验证
XTShareUpdatePasswordWithNewMessageSeverId
//车辆绑定短信验证
XTShareBindingCarMessageSeverId
//密码重置、密码找回短信验证
XTShareResetPasswordMessageSeverId
//邮箱绑定验证
XTShareBindingEmailMessageSeverId
//邮箱产线检测验证码验证
XTShareProuductEmailMessageSeverId
//手机获取验证码
[XTShareLogin sendVerificationCodeWithMoblieOrEmail:moblie andTemleteId:XTShareAppLoginMessageSeverId completionHandler:completionHandler];

邮箱获取验证码

[XTShareLogin sendVerificationCodeWithMoblieOrEmail:email andTemleteId:XTShareBindingEmailMessageSeverId completionHandler:completionHandler];

登录

SDK提供了多种登录的方式手机登录,手机号密码登录,第三方登录,邮箱登录
手机登录时,输入手机号获取验证码,输入正确的验证码进行登录

手机验证码登录
    [[XTShareUserAPI shareUserApi]loginWithMobile:@"17000000000" withjCaptchaCode:@"559975" completionHandler:^(XTShareUserInfo * _Nullable result, NSError * _Nullable error) {
        if (error) {
            NSLog(@"登录失败:%@",error);
        }
    }];
手机密码登录
//手机密码登录前要先进行对密码进行重置
    [[XTShareUserAPI shareUserApi]resetPasswordWithPassword:@"abcd1234" mobile:@"17000000000" withjCaptchaCode:@"351675" completionHandler:^(XTShareUserInfo * _Nullable result, NSError * _Nullable error) {
        if (!error) {
            NSLog(@"重置密码成功");
        }else{
            NSLog(@"重置密码失败:%@",error);
        }
    }];
//手机号密码登录
[[XTShareUserAPI shareUserApi]loginWithUserName:@" 17000000000" andPassword:@"abcd1234" completionHandler:^(XTShareUserInfo * _Nullable result, NSError * _Nullable error) {
        if (!error) {
            NSLog(@"登录成功");
        }else{
            NSLog(@"登录失败:%@",error);
        }
}];
第三方登录

目前服务端支持QQ,微信,新浪的第三方登录,在进行第三方登录之前需要对相应AppKey进行配置

[[XTShareUserAPI shareUserApi] configQQAppkey:@"100000000"];
//QQ第三方登录
[[XTShareUserAPI shareUserApi] loginWithQQAccessToken:@"ADSJEW12930193I" completionHandler:^(XTShareUserInfo * _Nullable result, NSError * _Nullable error) {
        NSLog(@"登录成功");
}];
//新浪第三方登录
[[XTShareUserAPI shareUserApi] loginWithSinaAccessToken:@"ADSJEW12930193I" withOpenId:@"129234" completionHandler:^(XTShareUserInfo * _Nullable result, NSError * _Nullable error) {
        NSLog(@"新浪登录成功");
    }];
//微信第三方登录
[[XTShareUserAPI shareUserApi]loginWithWeixinAccessToken:@"320434" withOpenId:@"9458495405" completionHandler:^(XTShareUserInfo * _Nullable result, NSError * _Nullable error) {
        NSLog(@"微信登录成功");
    }];
//扫码授权登录
[[XTShareUserAPI shareUserApi]loginWithCode:@"43983504" completionHandler:^(NSDictionary * _Nullable result, NSError * _Nullable error) {
        NSLog(@"扫码授权登录");
    }];

数据修改

该类还提供了一些快捷的数据上传的方法

修改密码

输入原密码和新密码对密码进行修改,密码要求不少于8位的数字和字母的组合

[[XTShareUserAPI shareUserApi]changePasswordWithOldpassword:@"12323" withNewpassword:@"232389uc" completionHandler:^(XTShareUserInfo * _Nullable result, NSError * _Nullable error) {
        
    }];
初始化密码
[[XTShareUserAPI shareUserApi]initPasswordWithPassword:@"abcd1234" completionHandler:^(NSDictionary * _Nullable result, NSError * _Nullable error) {
        if (!error) {
            NSLog(@"初始化密码成功");
        }else{
            NSLog(@"初始化密码失败:%@",error);
        }
    }];

用户经过手机验证成功后,输入新密码,手机号和验证码重置密码

[[XTShareUserAPI shareUserApi]resetPasswordWithPassword:@"23289aae" mobile:@"170000000" withjCaptchaCode:@"23242" completionHandler:^(XTShareUserInfo * _Nullable result, NSError * _Nullable error) {
        NSLog(@"重置密码成功");
    }];

上传头像

[[XTShareUserAPI shareUserApi]upLoadAvatar:[UIImage imageNamed:@""] completionHandler:^(XTShareUserInfo * _Nullable result, NSError * _Nullable error) {
        NSLog(@"头像上传成功");
    }];

上传头像成功后,会返回一个头像的Url,此时只是将头像上传到了文件服务器,还需要进一步修改用户的头像url信息才能完全修改成功

//上传用户头像信息
[[XTShareUserAPI shareUserApi]changeUserInfoWithUserinfo:@{@" avatarUrl":@" https://**.jpg"} completionHandler:^(XTShareUserInfo * _Nullable result, NSError * _Nullable error) {
        if(!error){
            NSLog(@"用户信息修改成功");
        }
    }];

获取用户信息

该类还提供了快捷获取或更新用户信息的方法

[[XTShareUserAPI shareUserApi]getUserInfoWithCompletionHandler:^(XTShareUserInfo * _Nullable result, NSError * _Nullable error) {
        if (!error) {
            NSLog(@"用户信息获取成功");
        }
    }];

刷新token

如果token失效我们可以通过刷新token的方法刷新token

[[XTShareUserAPI shareUserApi]refreshTokenWithCompletionHandler:^(XTShareUserInfo * _Nullable result, NSError * _Nullable error) {
        if (!error) {
            NSLog(@"刷新成功");
        }
    }];

获取人脸识别Token

[[XTShareUserAPI shareUserApi]getBizTokenWithCompletionHandler:^(NSDictionary * _Nullable result, NSError * _Nullable error) {
NSLog(@"%@",result);
}];

绑定手机号

[[XTShareUserAPI shareUserApi]bindingWithMobile:@"170000000" withjCaptchaCode:@"213298" withRelationId:@"" completionHandler:^(XTShareUserInfo * _Nullable result, NSError * _Nullable error) {
        if(!error){
            NSLog(@"绑定成功");
        }
    }];

用户信息更新设置XTShareUpdateUserInfo

XTShareUpdateUserInfo提供了用户信息更新设置的方法

修改密码

 [XTShareUpdateUserInfo changePasswordWithOldpassword:@"123232" withNewpassword:@"1232343" completionHandler:^(XTShareUserInfo * _Nullable result, NSError * _Nullable error) {
        
    }];

初始化密码

当用户注册成功还未设置密码时,可以通过该方法初始化密码

[XTShareUpdateUserInfo initWithPassword:@"2323ew24" completionHandler:^(NSDictionary * _Nullable result, NSError * _Nullable error) {
        NSLog(@"初始化密码成功");
    }];

重置密码

如果用户忘记密码可通过该,输入手机号和验证码重置密码

[XTShareUpdateUserInfo resetPasswordWithPassword:@"12323dfd" mobile:@"1700000000" withjCaptchaCode:@"" completionHandler:^(XTShareUserInfo * _Nullable result, NSError * _Nullable error) {
        NSLog(@"密码重置成功");
    }];

上传头像

上传头像是将本地图片传到文件服务器,上传成功后,服务器返回一个url

[XTShareUpdateUserInfo upLoadAvatar:[UIImage imageNamed:@"image"] completionHandler:^(NSDictionary * _Nullable result, NSError * _Nullable error) {
        NSLog(@"上传头像失败");
}];

获取到头像url后将更新用户的头像信息才能完成头像的修改

[XTShareUpdateUserInfo updateUserAvatarUrl:@"" completionHandler:^(XTShareUserInfo * _Nullable result, NSError * _Nullable error) {
        NSLog(@"头像修改成功");
}];

实名认证

实名认证是当用户处于登录状态时输入证件类型,证件号,真实姓名后进行的身份认证

[XTShareUpdateUserInfo realNameAuthenticationWithRealName:@"张三" cardType:@1 cardId:@"10002032030434344344" completionHandler:^(NSDictionary * _Nullable result, NSError * _Nullable error) {
        NSLog(@"实名誰成功");
    }]; 

获取验证码

该类提供了通过字典对用户信息进行统一修改的方法,输入对应用户信息的键值对即可对相应的信息进行修改。

[XTShareUpdateUserInfo changeUserInfoWithUserinfo:InfoDic completionHandler:^(XTShareUserInfo * _Nullable result, NSError * _Nullable error) {
        NSLog(@"修改成功");
    }];

为了方便用户使用,该类还提供了常用信息字段的修改

//修改头像
updateUserAvatarUrl
//更改邮箱
updateUserEmail
//更改昵称
updateUserNikeName
//更改签名
updateUserSignature
//更改性别
updateUserGender(男M,女F)
//更改生日
updateUserBirthday(时间缀)
//更改地区
updateUserAddressCity
//更改行业
updateUserProfession
//更改教育经历
updateUserEducation

人脸识别实名认证

人脸识别实名认证是通过活体检测获取人脸照片,将faceToken,真实姓名,证件类型,证件号,人脸照片传到服务器进行认证,如果需要开启车控功能可以将vehicle传入YES,证件类型1:身份证,3:护照,5:港奥通行证。

[XTShareUpdateUserInfo faceAuthWithFaceToken:@"13234" realName:@"张三" cardType:1 cardId:@"329434734" vehicle:YES meglive:[UIImage imageNamed:@""] CompletionHandler:^(NSDictionary * _Nullable result, NSError * _Nullable error) {
        if (!error) {
            NSLog(@"实名认证成功");
        }
    }];
车控人脸实名认证
[XTShareUpdateUserInfo carFaceAuthWithFaceToken:@"32424" realName:@"张三" cardType:1 cardId:@"23243435" meglive:[UIImage imageNamed:@""] CompletionHandler:^(NSDictionary * _Nullable result, NSError * _Nullable error) {
        if (!error) {
            NSLog(@"实名认证成功");
        }
    }];

登录状态变化通知

当用户登录状态变化时SDK都会发送一个XTShareNotificationLoginStateChange通知,如果有必要监测登录状态可以添加对该通知的监听。

//发送退出的通知
    [[XTShareUserInfo shareUserInfo]removeUserType:XTShareRemoveUserTypeLogout];
    KPostNotification(XTShareNotificationLoginStateChange, (@{@"type":@3,@"message":@"退出登录"}));

通知返回对象

可以通过notification.object获取到通知返回对象,该对象是一个字典,字典提供了两个键值对。

type

登录状态变化类型
0:登录成功,1:缺少登录身份,2:token失效,3:退出登录

message

登录状态变化时的提示信息

//添加通知监听
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(loginNotification:) name:XTShareNotificationLoginStateChange object:nil];

- (void)loginNotification:(NSNotification *) notification{
    NSLog(@"登录通知:%@%@",notification.object[@"type"],notification.object[@"message"]);
}

相关文章

网友评论

      本文标题:新特SDK

      本文链接:https://www.haomeiwen.com/subject/wgzryqtx.html