号码校验是云片提供的 APP 身份验证产品。整合三大运营商的手机号网关验证服务,可以替代 APP 上的注册、登录等场景需要使用到的短信验证码, 优化 APP 用户在移动设备上的使用体验。
-
访问云片官网进行注册账号,联系客服或者销售申请开通移动认证服务。
-
成功开通服务后,进入管理控制台,进入移动认证的产品管理页面。
-
选择新增应用,填写应用名称以及 BundleId,系统会为该产品分配 AppId,应用进入审核状态,并联系客服进行审核,等待审核完成。
客户端 SDK 支持 Android、iOS 两大平台,涉及到网站主的两个 API 请求以及与服务端的几个 API 请求。 客户端 SDK 的业务使用流程为:
-
调用初始化接口,初始化一键登录 SDK。
-
在初始化接口的回调中,调用预取号接口。
-
调用一键登录接口,完成一键登录,将成功回调的 cid 返回给开发者自己的服务端。
开发者服务端从客户端请求解析到相关参数后,接口能正确返回校验结果,即代表集成成功。
注意:SDK要求iOS版本为8.0及以上!
其中SDK文件夹中为需要接入的工程的框架文件,Demo工程中为演示样例。
导⼊SDK目录下的文件,其中接⼝在 YPOnePass.framework, OneLoginResource。boundle为资源文件;
找到主工程的 target -> Build Setting -> Linking -> Other Linker Flags,将其设置为 -ObjC ,
如果项目仍有问题,可以再添加-all_load:

接口说明:
初始化YPOnePass对象,作为上下文。
/**
初始化接口
@param appId 云片appId
@param timeout 超时时间
@return 类实例对象
*/
- (instancetype)initWithAppId:(NSString *)appId timeout:
(NSTimeInterval)timeout;
接口示例:
_manager = [[YPOnePass alloc]
initWithAppId:@"7511ee09fd0b4101b52764a95ac97bc1"
timeout:10];接口说明:
针对输入的号码进行本机校验;
/**
本机号码校验接口
@param phoneNum 待验证手机号
@param success 成功回调
@param fail 失败回调
*/
- (void)verifyPhoneNumber:(NSString *)phoneNum
onSuccess:(void (^)(NSDictionary *dicInfo))success
onFail:(void (^)(NSDictionary *dicInfo))fail;接口示例:
[_manager verifyPhoneNumber:_pnTF.text onSuccess:^
(NSDictionary *_Nonnull dicInfo) {
}onFail:^(NSDictionary *_Nonnull dicInfo) {
}];回调数据示例:
//成功 返回格式,注意这里并不代表验证成功
{
cid = b77b22ce5ddb9c0bc9204b2e64c4e55c;
}
//失败 返回格式
{
cid = 1bf5121f5ddba1c6c9204b2e64c4e561;
msg = "{\n
NSLocalizedDescription =
\"Invalid Phone Number. OnePass only supports
China Mobile/China Telecom/China Unicom etc.\";\n}";
status = 500;
}接口说明:
利用短信验证码验证,带界面,可通过修改viewModel定义界面。
/**
短信校验验证界面(注意:调用本接口前要提前调用预取号接口)
@param viewController 调用短信校验的界面
@param viewModel 界面自定义模型
@param sendSmsCompletion 发送短信回调
@param codeVerfiySmsCompletion 验证校验码回调
*/
- (void)requestSmsTokenWithViewController:(UIViewController *)viewController
viewModel:(nullable YPOnePassSmsViewModel *)viewModel
sendSmsCompletion:(void(^)(NSDictionary * _Nullable result))sendSmsCompletion
codeVerfiySmsCompletion:(void(^)(NSDictionary * _Nullable result))
codeVerfiySmsCompletion;接口示例
[_manager requestSmsTokenWithViewController:self viewModel:nil
sendSmsCompletion:^(NSDictionary * _Nullable result) {
} codeVerfiySmsCompletion:^(NSDictionary * _Nullable result) {
}];回调数据示例:
//成功 返回格式
{
cid = 3d76ca995ddb6e32c9204b2e64c4e50f;
msg = success;
status = 200;
}
//错误 返回格式
{
msg = "\U77ed\U4fe1\U6821\U9a8c\U672a\U901a\U8fc7";
status = 40008;
}接口说明:
利用短信验证码验证,纯接口调用,根据手机号,向手机发送验证码。
/**
发送短信接口,用于自定义实现短信校验功能
@param phoneNumber 手机号
@param callback 验证接口回调
*/
- (void)requestSmsVerifyWithPhoneNumber:(NSString *)
phoneNumber withCallback:(void (^)(NSDictionary *sender)
)callback;接口示例
[_manager requestSmsVerifyWithPhoneNumber:_pnTF.text
withCallback:^(NSDictionary * _Nonnull sender) {
//手机将获取验证码
}];
}回调数据示例:
//成功 返回格式
{
cid = b4c48a385ddba537c9204b2e64c4e562;
msg = success;
status = 200;
}
//错误 返回格式
{
msg = "\U77ed\U4fe1\U53d1\U9001\U5931\U8d25";
status = 40009;
}接口说明:
利用短信验证码验证,纯接口调用,检测验证码是否正确。
/**
校验验证码接口,用于自定义实现短信校验功能
@param code 短信验证码
@param callback 验证接口回调
*/
- (void)smsVerifyCode:(NSString *)code withCallback:
(void (^)(NSDictionary *sender))callback;接口示例
[_manager smsVerifyCode:@"xxxxx" withCallback:^
(NSDictionary * _Nonnull sender) {
}];回调数据示例:
//成功 返回格式
{
cid = b4c48a385ddba537c9204b2e64c4e562;
msg = success;
status = 200;
}
//错误 返回格式
{
msg = "\U65e0\U6548\U7684\U4f1a\U8bddID";
status = 40005;
}| 响应码 | 具体描述 |
|---|---|
| 200 | 成功 |
| 500 | 连接超时。失败 |
| 20000 | 初始化 SDK 失败 |
| 20001 | 未知错误 |
| 20002 | AppId 不能为空,请检查是否初始化 SDK |
| 20003 | submit token error |
| 20004 | 预取号 cid 为空 |
| 20005 | Used accessCode. You should get a valid AccessCode by preGetToken method first. |
