文档简介:
1.iOS SDK接入指南
1.1 注意事项
- 使用一键登录服务用户须打开蜂窝数据流量,取号过程中会消耗用户少量的流量。
- sdk 中自带有授权页面的 UI 逻辑,开发者可通过 SDK 接口暴露参数修改部分 UI 界面样式。
- 如果用户使用双卡手机,sdk 会使用当前设备上网的流量进行预取号操作。
- sdk 支持版本:iOS9.0 及以上。
- 请在天翼云官网-一键登录产品帮助中心-开发指南-SDK版本发布中下载最新版本SDK。
2.iOS SDK使用方法
2.1 环境配置
1.把 ability_login_ios_sdk.framework 拖入工程中,勾选 Copy item if needed。
2.把 AbilityResource.bundle资源包拖入工程,勾选 Copy item if needed。
3.info.plist 文件中添加 App Transport Security Settings / Allow Arbitrary Loads 子项 设置为 YES。
4.build phases 里添加 Copy Files, Destination 设置为 Frameworks,点击+,添加 ability_login_ios_sdk.framework。
5.build settings 里设置 Header Search Paths 设置 ability_login_ios_sdk.framework文件的路径,设置为 "$(SRCROOT)/ability_login_ios_demo_oc/ability_login_ios_sdk.framework"。
6.build settings 例设置 Other Linker Flags 添加 “-ObjC”。
如果项目是 swift 需要添加如下步骤
- 创建 OCBridgeHeader.h 桥接文件。
。
- 桥接文件中添加如下引用。
- build settings 里设置 Objective-C Bridging Header 设置为 $(PROJECT_DIR)/ability_login_ios_demo_swift/OCBridgeHeader.h。
- Precompile Bridging Header 设置为 No。
2.2 初始化接口
应用调用此方法初始化sdk,初始化会校验应用标识是否存在,回调成功后进行下一步预取号操作。
1.0.3及以上版本使用
-( void )initLogin:(NSString *)lxId secret:(NSString *)lxscecret isCompletion:( void (^)
(NSDictionary *_Nonnull result))completion复制
参数定义
参数名称 | 含义 |
---|---|
lxid | 用户申请应用的id |
lxscecret | 用户申请应用的secret(1.0.3及版本以上) |
completion | 初始化结果回调 |
成功响应
参数名称 | 类型 | 含义 |
---|---|---|
code | NSString | 200 |
msg | NSString | success |
userId | NSString | 用户userId |
operatorType | NSString | 运营商类型 |
代码示例:
[[AbilityLoginManage instance] initLogin:appId secret:appsecret isCompletion:^
(NSDictionary * _Nonnull result) { NSString *success = [NSString stringWithFormat:@"%@", [result objectForKey:@"code"]];
**if** ([success isEqualToString:@"200"]) {
NSLog(@"初始化成功");
}
}];复制
2.3 预取号接口
应用调用预取号接口校验应用签名,校验成功后接口会返回运营商类型和状态信息,回调成功后进行调起授权页面操作。
-( void )preLoginCompletion:( void (^)(NSDictionary *_Nonnull result))completion复制
参数定义
参数名称 | 含义 |
---|---|
completion | 预取号结果回调 |
成功响应
参数名称 | 类型 | 含义 |
---|---|---|
resultCode | NSString | 0 |
resultMsg | NSString | 获取accessCode成功 |
operatorType | NSString | 运营商类型 |
代码示例
[[AbilityLoginManage instance] preLoginCompletion:^(NSDictionary * _Nonnull result) {
**if** ([result[@"resultCode"] isEqualToString:@"0"]) {
NSLog(@"初始化成功");
}
}];复制
2.4 调取授权页接口
应用调用该方法会拉起用户授权页面,当用户点击确认授权后接口会返回运营商类型和token;用户授权页支持部分页面样式自定义,开发者可以通过实例化 ClickLogConfig 类,设置响应的参数调整页面样式。
-(void)loginToken:(nonnull UIViewController *)controller clickConfig:(nonnullClickLogConfig *)
config getTokenCompletion:(void(^)(NSDictionary *_Nonnullresult))completion复制
参数定义
参数名称 | 含义 |
---|---|
controller | 当前页面 |
config | ClickLogConfig实例,自定义授权页 |
completion | 授权页结果回调 |
成功响应
参数名称 | 类型 | 含义 |
---|---|---|
resultCode | NSString | 0 |
resultMsg | NSString | 登录成功 |
operatorType | NSString | 运营商类型 |
encrypt | NSString | 返回登录加密串 |
代码示例
[[AbilityLoginManage instance] loginToken:self clickConfig:config getTokenCompletion:^
(NSDictionary * _Nonnull result) { NSLog(@"~ %@" ,result);
//请求客户服务器取号代码
}];复制
2.5 点击其它登录方式
当用户在授权页面点击其他登录方式后,sdk 回调该方法。
-(void)otherLogclick;复制
代码示例:
[AbilityLoginManage instance].delegate = self; //添加代理abilityManageDelegate-
( void )otherLogclick{NSLog(@"点击了其他登录方式");
}复制
2.6 点击关闭授权页按钮回调
添加代理参考2.5。
-( void )closeButtonClick复制
2.7 点击授权登录未同意隐私协议回调
-(void)uncheckPrivacy;复制
代码示例
-( void )uncheckPrivacy{[WHToast showMessage:@"自定义-请同意服务条款"
originY: self .view.frame.size.height-100.0 duration:1 finishHandler: nil ];
}复制
2.8 点击隐私协议勾选框回调
-( void )privacyAgreementBoxStatus:( BOOL )boxStatuss;复制
2.9 点击登录按钮回调
-(void)abilityLogclick;复制
注:用户可在此回调中自定义加载动画
2.10 获取手机号能力
详见一键登录服务端接入文档。
2.11 本机号码校验
-( void )verificationPhoneNumber:(NSString *)phoneNumber getVerificatCompletion:( void (^)
(NSDictionary *_Nonnull result))completion;复制
参数定义
参数名称 | 含义 |
---|---|
phoneNumber | 手机号 |
completion | 授权页结果回调 |
成功响应
参数名称 | 类型 | 含义 |
---|---|---|
resultCode | NSString | 0 |
resultMsg | NSString | 校验成功 |
operatorType | NSString | 运营商类型 |
encrypt | NSString | 返回校验加密串 |
代码示例
[[AbilityLoginManage instance] verificationPhoneNumber:_phoneTextStr getVerificatCompletion:
^(NSDictionary * _Nonnull result) {NSLog(@" result%@", result);
//请求客户服务器号码校验代码
}];复制
2.12 判断设备移动数据网络是否开启
-(BOOL)checkDeviceCellularDataEnable ;复制
2.13 控制台日志输出开关
-(void)setPrintLoggerEnable:(BOOL)enable;复制
2.14 获取sdk版本号
-(NSString *)getVersion ;复制
2.15 获取运营商类型
-(NSString *)getOperatorType;复制
2.16 授权页面自定义UI参数
ClickLogConfig属性
#pragma mark **VC****属性**复制
授权登录页面是否全屏 默认全屏no
@property ( nonatomic , assign ) BOOL logIsPopup;复制
#pragma mark 状态栏
/*状态栏样式/
@property ( nonatomic , assign ) UIStatusBarStyle statusBarStyle;复制
#pragma mark 授权页导航栏
/*导航栏背景颜色/
@property ( nonatomic , strong ) UIColor *navBackColor;复制
/* 导航栏标题文本内容 /
@property ( nonatomic , strong ) NSString *navText;复制
/* 导航栏标题字体大小 /
@property ( nonatomic , assign ) int navTextSize;复制
/* 导航栏标题字体颜色 /
@property ( nonatomic , strong ) UIColor *navTextColor;复制
/* 导航栏标题是否隐藏,默认隐藏 /
@property ( nonatomic , assign ) BOOL navIsHide;复制
/* 返回按钮图片 /
@property ( nonatomic , strong ) UIImage *navReturnImg;复制
/* 返回按钮图片上下位置 /
@property ( nonatomic , assign ) float navReturnOffsetX;复制
//全屏时:按钮左侧距离屏幕左侧的偏移量 弹框时:按钮左侧距离弹框右侧的偏移量
@property ( nonatomic , assign ) float navReturnOffsetY;复制
/* 返回按钮图片宽高 /
@property ( nonatomic , assign ) float navReturnWidth;@property ( nonatomic , assign ) float navReturnHeight;复制
#pragma mark 隐私协议导航栏
/* 进入隐私协议导航栏背景颜色 /
@property ( nonatomic , strong ) UIColor *navPruvacyBackColor;复制
/* 进入隐私协议导航栏标题字体大小 /
@property ( nonatomic , assign ) int navPruvacyTextSize;复制
/* 进入隐私协议导航栏标题字体颜色 /
@property ( nonatomic , strong ) UIColor *navPruvacyTextColor;复制
/* 进入隐私协议导航栏返回图片 /
@property ( nonatomic , strong ) UIImage *navPruvacyReturnImg;复制
#pragma mark LOGO复制
/* LOGO图片 /
@property ( nonatomic , strong ) UIImage *logoImg;复制
/* LOGO的上下左右位置 /
@property ( nonatomic , assign ) float logoOffsetX;@property ( nonatomic , assign ) float logoOffsetY;复制
/* LOGO的宽高 /
@property ( nonatomic , assign ) float logoWidth;@property ( nonatomic , assign ) float logoHeight;复制
/* LOGO是否隐藏 /
@property ( nonatomic , assign ) BOOL logoIsHiddle;复制
#pragma mark 手机掩码
/* 手机号码字体颜色 /
@property ( nonatomic , strong ) UIColor *numberColor;复制
/* 手机号码字体大小 /
@property ( nonatomic , assign ) int numberTextSize;复制
/* 手机号码字体加粗,默认不加粗 /
@property ( nonatomic , assign ) int numberTextBold;复制
/* 手机号码MidX距离视图MidX轴的偏移 / //注意不要超出屏幕,超出屏幕移动会错位
@property ( nonatomic , assign ) float numFieldOffsetX;复制
/* 手机号码Y轴距离顶部偏移 /
@property ( nonatomic , assign ) float numFieldOffsetY;复制
/* 设置手机号码框的高度,暂不支持 /
#pragma mark 认证品牌
/* 认证品牌字体大小 /
@property ( nonatomic , assign ) int brandLabelTextSize;复制
/* 认证品牌字体颜色 /
@property ( nonatomic , strong ) UIColor *brandLabelTextColor;复制
/* 认证品牌MidX距离视图MidX轴的偏移 /
@property ( nonatomic , assign ) float brandLabelOffsetX;复制
/* 认证品牌Y轴距离顶部偏移 /
@property ( nonatomic , assign ) float brandLabelOffsetY;复制
#pragma mark 登录按钮
/* 登录按钮文本内容 /
@property ( nonatomic , strong ) NSString *logBtnText;复制
/* 登录按钮字体大小 /
@property ( nonatomic , assign ) int logBtnTextSize;复制
/* 登录按钮文本颜色 /
@property ( nonatomic , strong ) UIColor *logBtnTextColor;复制
/**登录按钮的左右边距 注意:按钮呈现的宽度在竖屏时必须大于屏幕的一半,横屏时必须大于屏幕的三分之一,默认左右是20
*/
@property ( nonatomic , assign ) CGFloat logBtnOriginL;@property ( nonatomic , assign ) CGFloat logBtnOriginR;复制
/* 登录按钮高 注意:必须大于40 /
@property ( nonatomic , assign ) float logBtnHeight;复制
/* 登录按钮Y轴位置 /
@property ( nonatomic , assign ) float logBtnOffsetY;复制
/* 登录按钮背景图片数组 /
@property ( nonatomic , strong ) NSArray *logBtnImgs;复制
#pragma mark 其他登录按钮
/* 其他登录方式是否隐藏 /
@property ( nonatomic , assign ) BOOL otherWayLogBtnHidden;复制
/* 其他登录方式文本内容 /
@property ( nonatomic , strong ) NSString *otherWayLogBtnText;复制
/* 其他登录方式字体颜色 /
@property ( nonatomic , strong ) UIColor *otherWayLogBtnTextColor;复制
/* 其他登录方式字体大小 /
@property ( nonatomic , assign ) int otherWayLogBtnTextSize;复制
/* 其他登录方式上下左右位置 /
@property ( nonatomic , assign ) float otherWayLogBtnOffsetX;@property
( nonatomic , assign ) float otherWayLogBtnOffsetY;复制
/* 其他登录方式宽高 /
@property ( nonatomic , assign ) float otherWayLogBtnOffWidth;@property
( nonatomic , assign ) float otherWayLogBtnOffHeight;复制
#pragma mark 隐私协议
/* 勾选框未勾选图片 /
@property ( nonatomic , strong ) UIImage *uncheckedImg;复制
/* 勾选框已勾选图片 /
@property ( nonatomic , strong ) UIImage *checkedImg;复制
/* 勾选框是否勾选 /
@property ( nonatomic , assign ) BOOL checkedStatus;复制
/* 勾选框宽高 /
@property ( nonatomic , assign ) float checkedWH;复制
/* 隐私条款上左右边距 /
@property ( nonatomic , assign ) float pruvacyOffsetL;@property ( nonatomic , assign ) float pruvacyOffsetR;复制
/* 隐私条款底部 距离 屏幕底部偏移量 /
@property ( nonatomic , assign ) float pruvacyOffsetY_B;复制
/* 隐私条款字体大小 /
@property ( nonatomic , assign ) int pruvacyTextSize;复制
/* 隐私条款最前面的文字 /
@property ( nonatomic , strong ) NSString *pruvacyBeforText;复制
/* 第二个协议和第三个协议之间连接文字 /
@property ( nonatomic , strong ) NSString *pruvacyLinksText;复制
/* 隐私条款最后面的文字 /
@property ( nonatomic , strong ) NSString *pruvacyAfterText;复制
/* 自定义隐私条款标题和url数组 /
@property ( nonatomic , strong ) NSArray *pruvacyTitleAndUrlArr;复制
/* 运营商默认隐私协议显示位置,第一个或最后一个 /
@property ( nonatomic , assign ) DefaultPruvacyPosition defaultPruvacyPosition;复制
/* 隐私条款正常文字颜色 /
@property ( nonatomic , strong ) UIColor *norTruvacyTextColor;复制
/* 隐私条款协议文字颜色 /
@property ( nonatomic , strong ) UIColor *pruTruvacyTextColor;复制
/* 运营商隐私条款是否带书名号,默认不带书名号 /
@property ( nonatomic , assign ) BOOL pruvacyBookMark;复制
#pragma mark 授权页面
/* 背景颜色 /
@property ( nonatomic , strong ) UIColor *backgroundColor;复制
#pragma mark 弹窗授权页
/* 弹窗的宽高比例,底部弹窗时popupScaleW设置无效*/
@property (nonatomic,assign) float popupScaleW;
@property (nonatomic,assign) float popupScaleH;复制
/* 弹窗的圆角,底部弹窗时只对弹窗左上角和右上角生效* /
@property (nonatomic,assign) float popupCornerRadius;复制
/*是否底部弹窗,true 底部弹窗,false 居中弹窗 /
@property (nonatomic,assign) BOOL isBottom;复制
/* 弹框授权页上下左右位置,暂不支持 /
#pragma mark 自定义控件
typedef void (^myCustomUIHandler)(UIView *customAreaView);复制
/* 添加自定义控件的,三方入口 /
@property ( nullable , nonatomic , copy ) myCustomUIHandler customUIHandler;