Skip to content

upyun/iOS-QuickLogin

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

##iOS SDK 集成指南

SDK 概述

  • 此 SDK 整合了三大运营商的网关认证能力,为开发者提供了一键登录功能,优化用户注册/登录、号码验证体验,提高安全性
  • 主要场景: 注册, 登陆, 验证
  • 目前 SDK 只支持iOS 8以上版本的手机系统

###接入配置

手动导入 SDK 到工程中:

拖动 demo 中的 Frameworks 文件夹到自己的工程中, 勾选 Copy items if needed
注: Frameworks 文件夹 含有 QuickLogin.framework, TYRZSDK.framework, EAccountApiSDK.framework, account_login_sdk_noui_core.framework, OAuth.framework

为工程添加相应的Frameworks,需要为项目添加的Frameworks如下

CoreLocation.framework
CFNetwork.framework
CoreFoundation.framework
libresolv.tbd
libz.tbd
libc++.1.tbd
CoreTelephony.framework
SystemConfiguration.framework
Security.framework
CoreGraphics.framework
libsqlite3.tbd
MobileCoreServices.framework

TYRZSDK.framework
account_login_sdk_noui_core.framework
EAccountApiSDK.framework
QuickLogin.framework
OAuth.framework

工程配置 配置-ObjC 设置工程 TARGETS -> Build Settings -> Other Links Flags, 设置 -ObjC

配置支持Http传输 右键打开工程plist文件,加入以下代码

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>

配置资源 如有需要. 请将演示 Demo 中 Assets.xcassets 图片资源复制到自己的工程。

###接入使用

Swift 接入 创建桥接头文件 如果你的Swift工程还未引入过Objective-C文件,需要创建一个以工程名称-Bridging-Header.h文件

配置路径 设置工程 TARGETS -> Build Settings -> Objective-C Bridging Header, 设置桥接文件工程名称-Bridging-Header.h的相对路径

引入头文件 在工程名称-Bridging-Header.h文件中引入头文件

Objective-C 接入

需要引用 #import <QuickLogin/QLHelper.h> 头文件, 并进行初始化

UPAuthConfig *config = [[UPAuthConfig alloc] init];
config.appKey = @"appkey";
config.timeout = 5000;
config.authBlock = ^(NSDictionary *result) {
    NSLog(@"初始化结果 result:%@", result);
};
[QLHelper setupWithConfig:config];

###运行Demo 下载 Demo 后. 修改 bundle idappkey 为自己的, 直接运行 ###相关 API

SDK 类说明

  1. QLHelper, SDK 入口
  2. UPAuthConfig, 应用配置信息类
  3. UPUIConfig, 登录界面UI配置基类
  4. UPLayoutConstraint, 认证界面控件布局类
  5. UPLayoutItem, 布局参照枚举

QLHelper 的主要方法,详见 QLHelper.h 文件

/// 初始化 SDK
+ (void)setupWithConfig:(UPAuthConfig *)config;

/**
 初始化过程是否完成
 * 完成YES, 未完成NO
 */
+ (BOOL)isSetupClient;

/**
 获取手机号校验token。和+ (void)getToken:(void (^)(NSDictionary *result))completion;实现的功能一致
 @param timeout 超时。单位ms,默认为5000ms。合法范围(0,10000]
 @param completion token相关信息。
 */
+ (void)getToken:(NSTimeInterval)timeout completion:(void (^)(NSDictionary *result))completion;

/**
 授权登录 预取号
 @param timeout 超时。单位ms,默认为5000ms。合法范围(0,10000]
 @param completion 预取号结果
 */
+ (void)preLogin:(NSTimeInterval)timeout completion:(void (^)(NSDictionary *result))completion;

/**
 授权登录
 @param vc 当前控制器
 @param hide 完成后是否自动隐藏授权页。
 @param animationFlag 拉起授权页时是否需要动画效果,默认YES
 @param timeout 超时。单位毫秒,合法范围是(0,30000],默认值为10000。此参数同时作用于拉起授权页超时 ,以及点击授权页登录按钮获取LoginToken超时
 @param completion 登录结果
 @parm  actionBlock 授权页事件触发回调。 type事件类型,content事件描述。详细见文档
 */
+ (void)getAuthorizationWithController:(UIViewController *)vc
                                  hide:(BOOL)hide
                              animated:(BOOL)animationFlag
                               timeout:(NSTimeInterval)timeout
                            completion:(void (^)(NSDictionary *result))completion
                           actionBlock:(void(^)(NSInteger type, NSString *content))actionBlock;
/**
隐藏登录页.当授权页被拉起以后,可调用此接口隐藏授权页。当一键登录自动隐藏授权页时,不建议调用此接口
@param flag 隐藏时是否需要动画
@param completion 授权页隐藏完成后回调。
*/
+ (void)dismissLoginControllerAnimated: (BOOL)flag completion: (void (^)(void))completion;

/*!
 * @abstract 设置是否打印sdk产生的Debug级log信息, 默认为NO(不打印log)
 *
 * SDK 默认开启的日志级别为: Info. 只显示必要的信息, 不打印调试日志.
 *
 * 请在SDK启动后调用本接口,调用本接口可打开日志级别为: Debug, 打印调试日志.
 * 请在发布产品时改为NO,避免产生不必要的IO
 */
+ (void)setDebug:(BOOL)enable;

/*!
 * @abstract 判断当前手机网络环境是否支持认证
 * YES 支持, NO 不支持
 */
+ (BOOL)checkVerifyEnable;

/*!
 * @abstract 清除预取号缓存
 */
+ (void)clearPreLoginCache;

/**
 自定义登录页UI样式参数
 @param UIConfig  UIConfig对象实例。仅使用UPUIConfig类型对象
 @param customViewsBlk 添加自定义视图block
*/
+ (void)customUIWithConfig:(UPUIConfig *)UIConfig customViews:(void(^)(UIView *customAreaView))customViewsBlk;

UPUIConfig SDK 自定义授权页面UI样式配置 和 添加自定义控件,详见 QLHelper.h 文件

注意: 开发者不得通过任何技术手段将授权页面的隐私协议栏、slogan隐藏或者覆盖,对于接入一键认证SDK并上线的应用,我方会对上线的应用授权页面做审查,如果发现未按要求设计授权页面,将关闭应用的一键登录服务。

UPUIConfig *config = [[UPUIConfig alloc] init];
[QLHelper customUIWithConfig:config customViews:^(UIView *customAreaView) {

}];
/// 详细具体的使用. 
/// 建议参考 demo 中的 ViewController.m 中 customFullScreenUI 和 customWindowUI 方法

UPUIConfig类

授权界面UI配置属性说明:

  • 授权页面设置
参数名称 参数类型 参数说明
authPageBackgroundImage UIImage 授权界面背景图片
autoLayout BOOL 是否使用autoLayout,默认YES,
shouldAutorotate BOOL 是否支持自动旋转 默认YES
orientation UIInterfaceOrientation 设置进入授权页的屏幕方向,不支持UIInterfaceOrientationPortraitUpsideDown
modalTransitionStyle UIModalTransitionStyle 授权页弹出方式,弹窗模式下不支持 UIModalTransitionStylePartialCurl
dismissAnimationFlag BOOL 关闭授权页是否有动画。默认YES,有动画。参数仅作用于以下两种情况:1、一键登录接口设置登录完成后,自动关闭授权页 2、用户点击授权页关闭按钮,关闭授权页
  • 导航栏
参数名称 参数类型 参数说明
navCustom BOOL 是否隐藏导航栏(适配全屏图片)
navColor UIColor 导航栏颜色
preferredStatusBarStyle UIStatusBarStyle 授权页 preferred status bar style,取代barStyle参数
navText NSAttributedString 导航栏标题
navReturnImg UIImage 导航返回图标
navControl UIBarButtonItem 导航栏右侧自定义控件
prefersStatusBarHidden BOOL 竖屏情况下,是否隐藏状态栏。默认NO.在项目的Info.plist文件里设置UIViewControllerBasedStatusBarAppearance为YES.注意:弹窗模式下无效,是否隐藏由外部控制器控制
navTransparent BOOL 导航栏是否透明,默认不透明。此参数和navBarBackGroundImage冲突,应避免同时使用
navReturnHidden BOOL 导航栏默认返回按钮隐藏,默认不隐藏
navReturnImageEdgeInsets UIEdgeInsets 导航栏返回按钮图片缩进,默认为UIEdgeInsetsZero
navDividingLineHidden BOOL 导航栏分割线是否隐藏,默认隐藏
navBarBackGroundImage UIImage 导航栏背景图片.此参数和navTransparent冲突,应避免同时使用
  • LOGO
参数名称 参数类型 参数说明
logoImg UIImage LOGO图片
logoWidth CGFloat LOGO图片宽度
logoHeight CGFloat LOGO图片高度
logoOffsetY CGFloat LOGO图片偏移量
logoConstraints NSArray LOGO图片布局对象
logoHorizontalConstraints NSArray LOGO图片 横屏布局,横屏时优先级高于logoConstraints
logoHidden BOOL LOGO图片隐藏
  • 登录按钮
参数名称 参数类型 参数说明
logBtnText NSString 登录按钮文本
logBtnOffsetY CGFloat 登录按钮Y偏移量
logBtnConstraints NSArray 登录按钮布局对象
logBtnHorizontalConstraints NSArray 登录按钮 横屏布局,横屏时优先级高于logBtnConstraints
logBtnTextColor UIImage 登录按钮文本颜色
logBtnFont UIFont 登录按钮字体,默认跟随系统
logBtnImgs UIColor 登录按钮背景图片添加到数组(顺序如下) @[激活状态的图片,失效状态的图片,高亮状态的图片]
  • 手机号码
参数名称 参数类型 参数说明
numberColor UIColor 手机号码字体颜色
numberSize CGFloat 手机号码字体大小
numberFont UIFont 手机号码字体,优先级高于numberSize
numFieldOffsetY CGFloat 号码栏Y偏移量
numberConstraints NSArray 号码栏布局对象
numberHorizontalConstraints NSArray 号码栏 横屏布局,横屏时优先级高于numberConstraints
  • checkBox
参数名称 参数类型 参数说明
uncheckedImg UIImage checkBox未选中时图片
checkedImg UIImage checkBox选中时图片
checkViewConstraints NSArray checkBox布局对象
checkViewHorizontalConstraints NSArray checkBox横屏布局,横屏优先级高于checkViewConstraints
checkViewHidden BOOL checkBox是否隐藏,默认不隐藏
privacyState BOOL 隐私条款check框默认状态 默认:NO
  • 隐私协议栏
参数名称 参数类型 参数说明
appPrivacyOne NSArray 隐私条款一:数组(务必按顺序)@[条款名称,条款链接]
appPrivacyTwo NSArray 隐私条款二:数组(务必按顺序)@[条款名称,条款链接]
appPrivacyColor UIImage 隐私条款名称颜色 @[基础文字颜色,条款颜色]
privacyTextFontSize CGFloat 隐私条款字体大小,默认12
privacyOffsetY CGFloat 隐私条款Y偏移量(注:此属性为与屏幕底部的距离)
privacyComponents NSArray 隐私条款拼接文本数组
privacyConstraints NSArray 隐私条款布局对象
privacyHorizontalConstraints NSArray 隐私条款 横屏布局,横屏下优先级高于privacyConstraints
privacyTextFontSize CGFloat 隐私条款字体大小,默认12
privacyTextAlignment NSTextAlignment 隐私条款文本对齐方式,目前仅支持 left、center
privacyShowBookSymbol BOOL 隐私条款是否显示书名号,默认不显示
privacyLineSpacing CGFloat 隐私条款行距,默认跟随系统
customPrivacyAlertViewBlock Block类型 自定义Alert view,当隐私条款未选中时,点击登录按钮时回调。当此参数存在时,未选中隐私条款的情况下,登录按钮可以被点击,block内部参数为自定义Alert view可被添加的控制器,详细用法可参见示例demo
  • 隐私协议页面
参数名称 参数类型 参数说明
agreementNavBackgroundColor UIColor 协议页导航栏背景颜色
agreementNavText NSAttributedString 运营商协议的协议页面导航栏标题
firstPrivacyAgreementNavText NSAttributedString 自定义协议1的协议页面导航栏标题
secondPrivacyAgreementNavText NSAttributedString 自定义协议2的协议页面导航栏标题
agreementNavReturnImage UIImage 协议页导航栏返回按钮图片
agreementPreferredStatusBarStyle UIStatusBarStyle 协议页 preferred status bar style,取代barStyle参数
  • slogan
参数名称 参数类型 参数说明
sloganOffsetY CGFloat slogan偏移量Y
sloganConstraints NSArray slogan布局对象
sloganHorizontalConstraints NSArray slogan 横屏布局,横屏下优先级高于sloganConstraints
sloganTextColor UIColor slogan文字颜色
sloganFont UIFont slogan文字font,默认12
  • loading
参数名称 参数类型 参数说明
loadingConstraints NSArray loading布局对象
loadingHorizontalConstraints NSArray 默认loading 横屏布局,横屏下优先级高于loadingConstraints
customLoadingViewBlock Block类型 自定义loading view,当授权页点击登录按钮时回调。当此参数存在时,默认loading view不会显示,需开发者自行设计loading view。block内部参数为自定义loading view可被添加的父视图,详细用法可参见示例demo
  • 弹窗
参数名称 参数类型 参数说明
showWindow BOOL 是否弹窗,默认no
windowBackgroundImage UIImage 弹框内部背景图片
windowBackgroundAlpha CGFloat 弹窗外侧 透明度 0~1.0
windowCornerRadius CGFloat 弹窗圆角数值
windowConstraints NSArray 弹窗布局对象
windowHorizontalConstraints NSArray 弹窗横屏布局,横屏下优先级高于windowConstraints
windowCloseBtnImgs NSArray 弹窗close按钮图片 @[普通状态图片,高亮状态图片]
windowCloseBtnConstraints NSArray 弹窗close按钮布局
windowCloseBtnHorizontalConstraints NSArray 弹窗close按钮 横屏布局,横屏下优先级高于windowCloseBtnConstraints

错误码列表

code 描述 备注
1000 verify consistent 手机号验证一致
1001 verify not consistent 手机号验证不一致
1002 unknown result 未知结果
1003 token expired token失效
1004 sdk verify has been closed SDK发起认证未开启
1005 AppKey 不存在 请到官网检查 Appkey 对应的应用是否已被删除
1006 frequency of verifying single number is beyond the maximum limit 同一号码自然日内认证消耗超过限制
1007 beyond daily frequency limit appKey自然日认证消耗超过限制
1008 AppKey 非法 请到官网检查此应用详情中的 Appkey,确认无误
1009 当前的 Appkey 下没有创建 iOS 应用;你所使用的 JCore 版本过低 请到官网检查此应用的应用详情;更新应用中集成的 JCore 至最新。
1010 verify interval is less than the minimum limit 同一号码连续两次提交认证间隔过短
2000 token request success 获取token 成功
2001 fetch token error 获取token失败
2002 sdk init failed sdk初始化失败
2003 netwrok not reachable 网络连接不通
2004 get uid failed 极光服务注册失败
2005 request timeout 请求超时
2006 fetch config failed 获取配置失败
2008 Token requesting, please wait 正在获取token中,稍后再试
2009 verifying, please try again later 正在认证中,稍后再试
2014 internal error while requesting token 请求token时发生内部错误
2015 rsa encode failed rsa加密失败
2016 network type not supported 当前网络环境不支持认证
2017 carrier config invalid 运营商配置无效
4001 参数错误。请检查参数,比如是否手机号格式不对
4009 解密rsa失败
4014 appkey is blocked 功能被禁用
4018 没有足够的余额
4031 不是认证用户
4032 获取不到用户配置
4033 Login feature is not available 未开启一键登录
6000 loginToken request success 获取loginToken成功
6001 fetch loginToken failed 获取loginToken失败
6002 login cancel 用户取消登录
6003 UI load error UI加载异常
6004 authorization requesting, please try again later 正在登录中,稍候再试
6006 prelogin scrip expired 预取号信息过期,请重新预取号
7000 preLogin success 预取号成功
7001 preLogin failed 预取号失败
7002 preLogin requesting, please try again later 取号中
8000 init success 初始化成功
8004 init failed 初始化失败
8005 init timeout 初始化超时

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published