全新人机验证方式,高效拦截机器行为,业务安全第一道防线。搭载风险感知引擎,智能切换验证难度,安全性高,极致用户体验。读屏软件深度适配,视障群体也可轻松使用,符合工信部无障碍适配要求
条目 | 说明 |
---|---|
适配版本 | iOS8以上 |
开发环境 | Xcode 11.4 |
podfile 里面添加以下代码:
source 'https://github.com/CocoaPods/Specs.git' // 指定下载源
# 以下两种版本选择方式示例
# 集成最新版SDK:
pod 'NTESVerifyCode'
# 集成指定SDK,具体版本号可先执行 pod search NTESVerifyCode,根据返回的版本信息自行决定:
pod 'NTESVerifyCode', '~> 3.3.3'
- 保存并执行 pod install 即可,若未执行 pod repo update,请执行pod install --repo-update
- 1、添加易盾SDK,将压缩包中所有资源添加到工程中(请勾选Copy items if needed选项)
- 2、添加依赖库,在项目设置target -> 选项卡General ->Linked Frameworks and Libraries添加如下依赖库,如果已存在如下的系统framework,则忽略:
SystemConfiguration.framework
JavaScriptCore.framework
WebKit.framework
- 1、在Xcode中找到
TARGETS-->Build Setting-->Linking-->Other Linker Flags
在这个选项中需要添加-ObjC
// 在项目需要使用SDK的文件中引入 #import <VerifyCode/NTESVerifyCodeManager.h>
@property(nonatomic, strong) NTESVerifyCodeManager *manager;
/// 获取验证码管理对象
self.manager = [NTESVerifyCodeManager getInstance];
// sdk 调用
self.manager.mode = NTESVerifyCodeNormal;
[self.manager configureVerifyCode:请输入易盾业务ID timeout:超时时间];
// 显示验证码
[self.manager openVerifyCodeView:nil];
更多使用场景请参考 demo
在项目需要使用 SDK 的文件中先引入#import <VerifyCode/NTESVerifyCodeManager.h> 然后再初始化的 SDK,如下:
self.manager = [NTESVerifyCodeManager getInstance];
类型 | 描述 |
---|---|
NSObject | 验证码实例化对象 |
[self.manager configureVerifyCode:请输入易盾业务ID timeout:超时时间];
-
入参说明:
参数 类型 是否必填 默认值 描述 businessId NSString 是 无 易盾分配的业务id timeout NSString 是 无 加载验证码的超时时间,最长12秒。这个时间尽量设置长一些,比如7秒以上(7-12秒)
NTESVerifyCodeStyleConfig *styleConfig = [[NTESVerifyCodeStyleConfig alloc] init];
[self.manager configureVerifyCode:请输入易盾业务ID timeout:超时时间 styleConfig:styleConfig];
-
基础入参说明:
参数 类型 是否必填 默认值 描述 businessId NSString 是 无 易盾分配的业务id timeout NSString 是 无 加载验证码的超时时间,最长12秒。这个时间尽量设置长一些,比如7秒以上(7-12秒) -
styleConfig入参说明:
参数 类型 是否必填 默认值 描述 radius NSUInteger 否 无 验证码圆角 capBarTextAlign enum 否 无 NTESCapBarTextAlignLeft 居左显示
NTESCapBarTextAlignRight 居右显示
NTESCapBarTextAlignCenter 居中显示capBarBorderColor NSString 否 无 弹框头部下边框颜色,想要去掉的话可取 transparent 或者与背景色同色 #fff capBarTextColor NSString 否 无 弹框头部标题文字颜色 capBarTextSize NSUInteger 否 无 弹框头部标题文字字体大小 capBarTextWeight NSString 否 无 弹框头部标题文字字体体重,可设置粗细,
参考:capBarTextWeight: normal、bold、lighter、bolder、100、200、300、400、500、600、700、800、900
更多详情参考:https://developer.mozilla.org/en-US/docs/Web/CSS/font-weightcapBarTitleHeight NSUInteger 否 无 弹框头部标题所在容器高度 capBodyPadding NSUInteger 否 无 验证码弹框 body 部分的内边距,相当于总体设置 capPaddingTop,capPaddingRight,capPaddingBottom,capPaddingLeft capPaddingTop NSString 否 无 验证码弹框 body 部分的【上】内边距,覆盖 capPadding 对于上内边距的设置,单位px capPaddingRight NSString 否 无 验证码弹框 body 部分的【右】内边距,覆盖 capPadding 对于右内边距的设置,单位px capPaddingBottom NSString 否 无 验证码弹框 body 部分的【底】内边距,覆盖 capPadding 对于底内边距的设置,单位px capPaddingLeft NSString 否 无 验证码弹框 body 部分的【左】内边距,覆盖 capPadding 对于左内边距的设置,单位px paddingTop NSString 否 无 弹框【上】内边距,实践时候可与 capPaddingTop 配合,单位px paddingBottom NSString 否 无 弹框【下】内边距,实践时候可与 capPaddingBottom 配合,单位px capBorderRadius NSUInteger 否 无 验证码弹框body圆角 borderColor NSString 否 无 滑块的边框颜色 background NSString 否 无 滑块的背景颜色 borderColorMoving NSString 否 无 滑块的滑动时边框颜色,滑动类型验证码下有效 backgroundMoving NSString 否 无 滑块的滑动时背景颜色,滑动类型验证码下有效 borderColorSuccess NSString 否 无 滑块的成功时边框颜色,此颜色同步了文字成功时文字颜色、滑块背景颜色 backgroundSuccess NSString 否 无 滑块的成功时背景颜色 backgroundError NSString 否 无 滑块的失败时背景颜色 borderColorError NSString 否 无 失败时边框颜色 slideBackground NSString 否 无 滑块的滑块背景颜色 textSize NSUInteger 否 无 滑块的内容文本大小 textColor NSString 否 无 滑块内容文本颜色(滑块滑动前的颜色,失败、成功前的颜色) height NSUInteger 否 无 滑块的高度 borderRadius NSUInteger 否 无 滑块的圆角 gap NSString 否 无 滑块与验证码视图之间的距离,单位px executeBorderRadius NSUInteger 否 无 组件圆角大小 executeBackground NSString 否 无 组件背景色 executeTop NSString 否 无 组件外层容器距离组件顶部距离,单位px executeRight NSString 否 无 组件外层容器距离组件右侧距离,单位px
配置项可以通过 self.manager 点语法配置 例如 self.manager.mode = NTESVerifyCodeNormal。
配置项 | 类型 | 是否必填 | 默认值 | 描述 |
---|---|---|---|---|
frame | CGRect | 否 | NTESVerifyCodeNormal | 验证码控件显示的位置,可以不传递。 (1)如果不传递或者传递为CGRectNull(CGRectZero),则使用默认值:topView的居中显示,宽度为屏幕宽度的4/5,高度:view宽度/2.0 + 65。 (2)如果传递,则frame的宽度至少为270;高度至少为:宽度/2.0 + 65。 |
mode | enum | 否 | NTESVerifyCodeNormal | NTESVerifyCodeNormal 表示传统验证码 NTESVerifyCodeBind 表示无感知验证码 |
protocol | enum | 否 | NTESVerifyCodeProtocolHttps | NTESVerifyCodeProtocolHttps 表示 HTTPS 协议 NTESVerifyCodeProtocolHttp 表示 HTTP 协议 |
alpha | CGFloat | 否 | 0.3 | 验证码遮罩的透明度 范围:0~1,0表示全透明,1表示不透明。默认值:0.3 |
color | UIColor | 否 | blackColor | 验证码遮罩的颜色,默认值:黑色 |
fallBackCount | NSUInteger | 否 | 3 | 设置发生第fallBackCount次错误时,将触发降级,取值范围 >=1。默认设置为3次,第三次服务器发生错误时,触发降级,直接通过验证。 |
openFallBack | BOOL | 否 | YES | 设置极端情况下,当验证码服务不可用时,是否开启降级方案。默认开启,当触发降级开关时,将直接通过验证,进入下一步。 |
closeButtonHidden | BOOL | 否 | NO | 是否隐藏关闭按钮。默认不隐藏,设置为 YES 隐藏,NO 不隐藏 |
shouldCloseByTouchBackground | BOOL | 否 | YES | 点击背景是否可以关闭验证码视图,默认可以关闭。 |
slideIconURL | NSString | 否 | 无 | 验证码滑块 icon url,不传则使用易盾默认滑块显示。 |
delegate | id | 否 | 无 | 遵守协议 self.manager.delegate = self |
lang | enum | 否 | NTESVerifyCodeLangCN | 设置验证码语言类型 NTESVerifyCodeLangCN 表示中文 NTESVerifyCodeLangEN 表示英文 NTESVerifyCodeLangTW 表示繁体 NTESVerifyCodeLangJP 表示日文 NTESVerifyCodeLangKR 表示韩文 NTESVerifyCodeLangTL 表示泰文 NTESVerifyCodeLangVT 表示越南语 NTESVerifyCodeLangFRA 表示法语 NTESVerifyCodeLangRUS 表示俄语 NTESVerifyCodeLangKSA 表示阿拉伯语 NTESVerifyCodeLangDE 表示德语 NTESVerifyCodeLangIT 表示意大利语 NTESVerifyCodeLangHE 表示希伯来语 NTESVerifyCodeLangHI 表示印地语 NTESVerifyCodeLangID 表示印尼语 NTESVerifyCodeLangMY 表示缅甸语 NTESVerifyCodeLangLO 表示老挝语 NTESVerifyCodeLangMS 表示马来语 NTESVerifyCodeLangPL 表示波兰语 NTESVerifyCodeLangPT 表示葡萄牙语 NTESVerifyCodeLangES 表示西班牙语 NTESVerifyCodeLangTR 表示土耳其语 NTESVerifyCodeLangNL 表示荷兰语 NTESVerifyCodeLangUG 表示维吾尔语 NTESVerifyCodeLangMN 表示蒙古语 NTESVerifyCodeLangMAI 表示迈蒂利语 NTESVerifyCodeLangAS 表示阿萨姆语 NTESVerifyCodeLangPA 表示旁遮普语 NTESVerifyCodeLangOR 表示欧里亚语 NTESVerifyCodeLangML 表示马来亚拉姆语 NTESVerifyCodeLangKN 表示卡纳达语 NTESVerifyCodeLangGU 表示古吉拉特语 NTESVerifyCodeLangTA 表示泰米尔语 NTESVerifyCodeLangMR 表示马拉地语 NTESVerifyCodeLangTE 表示泰卢固语 NTESVerifyCodeLangAM 表示阿姆哈拉语 NTESVerifyCodeLangMI 表示毛利语 NTESVerifyCodeLangSW 表示斯瓦西里语 NTESVerifyCodeLangNE 表示尼泊尔语 NTESVerifyCodeLangJV 表示爪哇语 NTESVerifyCodeLangFIL 表示菲律宾语 NTESVerifyCodeLangBN 表示孟加拉语 NTESVerifyCodeLangKK 表示哈萨克语(西里尔文) NTESVerifyCodeLangBE 表示白俄罗斯语 NTESVerifyCodeLangBO 表示藏语 NTESVerifyCodeLangUR 表示乌尔都语 NTESVerifyCodeLangSI 表示僧伽罗语 NTESVerifyCodeLangKM 表示高棉语 NTESVerifyCodeLangUZ 表示乌兹别克语 NTESVerifyCodeLangAZ 表示阿塞拜疆语 NTESVerifyCodeLangKA 表示格鲁吉亚语 NTESVerifyCodeLangEU 表示巴斯克语 NTESVerifyCodeLangGL 表示加利西亚语 NTESVerifyCodeLangCA 表示加泰罗尼亚语 NTESVerifyCodeLangFA 表示波斯语 NTESVerifyCodeLangUK 表示乌克兰语 NTESVerifyCodeLangHR 表示克罗地亚语 NTESVerifyCodeLangSL 表示斯洛文尼亚语 NTESVerifyCodeLangLT 表示立陶宛语 NTESVerifyCodeLangLV 表示拉脱维亚语 NTESVerifyCodeLangET 爱沙尼亚语 NTESVerifyCodeLangFI 表示芬兰语 NTESVerifyCodeLangBG 表示保加利亚语 NTESVerifyCodeLangMK 表示马其顿语 NTESVerifyCodeLangBS 表示波斯尼亚语 NTESVerifyCodeLangSR 表示塞尔维亚语(拉丁文) NTESVerifyCodeLangEL 表示希腊语 NTESVerifyCodeLangRO 表示罗马尼亚语 NTESVerifyCodeLangSK 表示斯洛伐克语 NTESVerifyCodeLangHU 表示匈牙利语 NTESVerifyCodeLangCS 表示捷克语 NTESVerifyCodeLangDA 表示丹麦语 NTESVerifyCodeLangNN 表示挪威语 NTESVerifyCodeLangSV 表示瑞典语 NTESVerifyCodeLangPTBR 表示巴西葡语 NTESVerifyCodeLangESLA 表示拉美西语 |
extraData | NSString | 否 | 无 | extraData透传业务数据 |
deviceOrientation | enum | 否 | 无 | NTESDeviceOrientationUnknown 方向未知 NTESDeviceOrientationPortrait 固定竖屏,验证码不会跟随设备旋转而旋转 NTESDeviceOrientationLandscape 固定横屏,验证码不会跟随设备旋转而旋转 |
[self.manager openVerifyCodeView:nil];
-
入参说明:
类型 是否必填 默认值 描述 UIView 否 无 在指定的视图上展示验证码视图,如果传递值为nil,则使用默认值:[[[UIApplication sharedApplication] delegate] window]
[[self.manager openVerifyCodeView:nil customLoading:YES customErrorPage:YES];];
-
入参说明:
类型 是否必填 默认值 描述 UIView 否 无 在指定的视图上展示验证码视图,如果传递值为nil,则使用默认值:[[[UIApplication sharedApplication] delegate] window] customLoading 否 NO 传YES,自行设置加载页,在 verifyCodeInitFinish 方法里面隐藏加载页。NO,显示易盾加载页 customErrorPage 否 NO 传YES,自行设置错误页,在verifyCodeInitFailed 里显示错误页。NO,显示易盾加载页
[[self.manager openVerifyCodeView:nil loadingView nil customLoading:YES customErrorPage:YES];];
-
入参说明:
类型 是否必填 默认值 描述 UIView 否 无 在指定的视图上展示验证码视图,如果传递值为nil,则使用默认值:[[[UIApplication sharedApplication] delegate] window] loadingView 否 无 如果是智能无感知验证码,并且是自定义loading页面,loadingView必传 customLoading 否 NO 传YES,自行设置加载页,在 verifyCodeInitFinish 方法里面隐藏加载页。NO,显示易盾加载页 customErrorPage 否 NO 传YES,自行设置错误页,在verifyCodeInitFailed 里显示错误页。NO,显示易盾加载页
[self.manager closeVerifyCodeView];
[self.manager enableLog:];
-
入参说明:
类型 是否必填 默认值 描述 BOOL 否 NO 是否开启 SDK 日志打印,YES 表示开启;NO 表示不开启。默认为 NO
NSString *version = [self.manager getSDKVersion];
-
返回值说明:
类型 描述 NSString 当前 SDK 的版本号
/**
* 验证码组件初始化完成
*/
- (void)verifyCodeInitFinish;
/**
* 验证码组件初始化出错
*
* @param error 错误信息
*/
- (void)verifyCodeInitFailed:(NSArray *)error;
/**
* 完成验证之后的回调
*
* @param result 验证结果 BOOL:YES/NO
* @param validate 二次校验数据,如果验证结果为false,validate返回空
* @param message 结果描述信息
*
*/
- (void)verifyCodeValidateFinish:(BOOL)result validate:(NSString *)validate message:(NSString *)message;
/**
* 关闭验证码窗口后的回调
*
* @param close 关闭的类型
*/
- (void)verifyCodeCloseWindow:(NTESVerifyCodeClose)close;
code | 含义 |
---|---|
200 | 校验未通过,是因为业务错误,包含超限 |
300 | 校验未通过,包含轨迹错误等 |
432 | 非法业务ID,包含业务到期等 |
501 | 请求失败,包括网络原因等 |
502 | 请求脚本资源失败 |
503 | 请求图片资源失败 |
505 | 请求音频资源失败 |
1000 | 未知错误 |
1004 | 初始化失败,接口超时 |
-1 | 未知的错误 |
-999 | 请求被取消 |
-1000 | 请求的URL错误,无法启动请求 |
-1001 | 请求超时 |
-1002 | 不支持的URL Scheme |
-1003/-1006 | URL的host名称无法解析,即DNS有问题 |
-1004 | 连接host失败 |
-1005 | 连接过程中被中断 |
-1007 | 重定向次数超过限制 |
-1008 | 无法获取所请求的资源 |
-1009 | 断网状态 |
-1010 | 重定向到一个不存在的位置 |
-1011 | 服务器返回数据有误 |
-1012 | 身份验证请求被用户取消 |
-1013 | 访问资源需要身份验证 |
-1014 | 服务器报告URL数据不为空,却未返回任何数据 |
-1015 | 响应数据无法解码为已知内容编码 |
-1016 | 请求数据存在未知内容编码 |
-1017 | 响应数据无法解析 |
-1018 | 漫游时请求数据,但是漫游开关已关闭 |
-1019 | EDGE、GPRS等网络不支持电话和流量同时进行,当正在通话过程中,请求失败错误码 |
-1020 | 手机网络不允许连接 |
-1021 | 请求的body流被耗尽 |
-1100 | 请求的文件路径上文件不存在 |
-1101 | 请求的文件只是一个目录,而非文件 |
-1102 | 缺少权限无法读取文件 |
-1103 | 资源数据大小超过最大限制 |
-1200 | 安全连接失败 |
-1201 | 服务器证书过期 |
-1202 | 不受信任的根服务器签名证书 |
-1203 | 服务器证书没有任何根服务器签名 |
-1204 | 服务器证书还未生效 |
-1205 | 服务器证书被拒绝 |
-1206 | 需要客户端证书来验证SSL连接 |
-2000 | 请求只能加载缓存中的数据,无法加载网络数据 |
-3000 | 下载操作无法创建文件 |
-3001 | 下载操作无法打开文件 |
-3002 | 下载操作无法关闭文件 |
-3003 | 下载操作无法写文件 |
-3004 | 下载操作无法删除文件 |
-3005 | 下载操作无法移动文件 |
-3006 | 下载操作在下载过程中,对编码文件进行解码时失败 |
-3007 | 下载操作在下载完成后,对编码文件进行解码时失败 |