IOS SDK 接入指南


SDK 支持版本 IOS8.0 及以上
IOS12.0以下需要引入network.framework包

1、注意事项


1.1、一键登录服务必须打开蜂窝数据流量并且手机操作系统给予应用蜂窝数据权限才能使用

1.2、取号请求过程会消耗用户少量数据流量

1.3、目前只支持中国移动、中国联通、中国电信,不支持虚拟号码



2、接入流程


2.1、申请注册submail账号并且开通一键登录服务,申请appid并且等待审核通过。

2.2、前往 https://github.com/dev-submail/onepass 下载IOS一键登录SDK DEMO(含SDK开发包)

2.3、将红色框体内的开发包拖到项目中



2.4、在Xcode中找到 TARGETS -> Bulid Settings -> Linking -> Other Linker Flags,配置此项 -Ojbc -all_load



2.5、 在Xcode中找到 TARGETS -> Build Phases -> Link Binary With Libraries添加依赖库

​ libc++.1.tbd

​ libz.1.2.8.tbd



2.6、配置appid和appkey,导入头文件 #import <submail_sdk/OclLogin.h>


2.7、初始化SDK

​ 示例代码:

  OclLogin * ocl = [OclLogin sharedInstance];

​     [ocl initWithAppId:@"appid" AppKey:@"appkey"];

​     param AppId 申请的appid

​     param AppKey 申请的appkey

​     初始化方法只需要执行一次即可


2.8、获取运营商类型

​ - (NSNumber*) getWorkType

​ 返回值 1=中国移动,2=中国联通,3=中国电信

​ 示例代码:

 NSNumber * type = [[OclLogin sharedInstance] getWorkType];


2.9、预取号:

​ 前提条件:已经初始化过SDK

​ 预取号方法:- (void) getAccessCodeFinishBlock:(LoginBlock)completion;

​ 参数说明:completion:预取号回调

​ 示例代码:

     OclLogin * ocl = [OclLogin sharedInstance];

​     [ocl getAccessCodeFinishBlock:^(NSDictionary * _Nullable response){

​       NSLog(@"accessCode:%@",response);

​     }];

​     预取号成功,回调返回 status:success

​     预取号失败,回调返回status:error

​ 提示,如果此步骤失败,应切换其他登录方式。

​ 在拉起授权页前先调用预取号方法,可大幅降低拉起授权页的延迟


2.10、获取取号token

​ 方法:- (void) getAccessToken:(UIViewController ) controller WithModel:(OclModel )model complete:(LoginBlock)completion;

​ 该方法用于发起取号请求,获取token,之后可以通过此token请求服务器接口获取手机号。

​ 示例代码:

 OclLogin *ocl = [OclLogin sharedInstance];

​     [ocl getAccessToken:self WithModel:oclModel complete:^(NSDictionary * _Nullable response){

​        NSNumer * code = response[@"code"];

​        if([code intValue] == 0){

​            //请求服务器接口取号

​        }

​     }];

​ 参数说明:

​ model:授权页model

​ complete:获取token回调

​ 回调结果参数说明

​ code 1=授权页成功拉起 0=获取token成功 -1=获取token失败

​ accessToken code=0时返回

​ authCode 运营商为电信号码时返回


2.11、其他方法

​ - (void) setTimeoutInterval:(NSTimeInterVal)timeout;

​ 方法说明:设置取号超时时间




3、Model属性说明


=====全局=====

3.1,authBackgroundImage:授权页背景图


=====按钮=====

3.2,loginBtnText:登录按钮文本(富文本)

3.21,loginBtnHeight:登录按钮高度

3.22,loginBtnWidth:登录按钮宽度

3.23,loginBtnOffsetY:登录按钮Y轴偏移

3.24,loginBtnImgs:登录按钮背景图(正常状态,禁用状态,高亮状态)


=====号码栏=====

3.3,numberText:脱敏手机号(富文本,文字内容会被强制替换为脱敏手机号)

3.31, numberOffsetY:号码栏Y轴距离顶部的高度

3.32,numberOffsetY_B:号码栏Y轴距离底部的高度


=====协议栏=====

3.4,checkboxDisplay:是否显示协议复选框(默认不显示)

3.41,uncheckedImg:复选框未选中时背景图

3.42,checkedImg:复选框选中时背景图

3.43,checkboxSize:复选框大小

3.44,privacyState:协议状态(默认同意协议)

3.45,privacyText:协议文本(富文本)

3.46,privacy:额外协议(富文本)

3.47,privacyColor:协议文字颜色

3.48,privacyOffsetY:协议Y轴偏移

3.49,checkTipText:未勾选隐私条款提示的自定义提示文案,提示功能默认关闭,该属性设置有效时打开提示功能


=====窗口模式=====

3.5,windowStyle:窗口风格(1=全屏模式,2=边缘弹窗,3=浮动窗口)

3.51,windowCornerRadius:窗口圆角(全屏模式不生效)

3.52,windowScaleH:窗口高度比(全屏模式不生效,边缘弹窗默认0.4,浮动窗口默认0.5)

3.53,windowScaleW:窗口宽度比(全屏模式不生效,浮动窗口默认0.8)

3.54,webNavTitleAttrs:标题文字属性


=====自定义控件=====

3.6,authViewBlock:自定义控件回调

3.61,authLoadingViewBlock:自定义加载动画回调


示例代码可参考Demo示例。




4、设计规范


4.1,接入方在调用登录认证方法之前,必须显示出授权页面供用户授权确认,明确告知用户当前操作会将用户的本机号码信息传递给应用。

4.2,接入方不得以任何手段将授权页隐私栏隐藏,登录按钮不得使用具有诱导性点击的词汇