一、准备工作
概述
本文档是人像比对SDK_iOS v2.0.0 版本的接入文档,用于指导SDK的使用方法,默认读者熟悉Xcode编译器的使用以及iOS编程语言。
前置条件
- SDK版本:V 2.0
- Xcode版本 : V9.4.1及以上版本,iOS9.0 及以上版本。
创建应用
- 提示:一个应用对应一个appid,多个应用(不同bundleID)需在闪验平台创建多个应用以对应多个appid
应用的创建流程及APPID/APPKEY的获取,请查看「账号创建」文档
快速体验Demo
- 将demo 的bundle Identifer 换成自己的项目的Bundle Identifier(与平台创建项目时提交的Bundle Identifier 对应)。
- 编译运行。
开发环境搭建
- 导入FrameWork :将实人认证SDK压缩包中framework中的所有资源添加到工程中,并选择 Copy Items if need 选项
- 配置Xcode
- 关闭Bitcode 。设置Xcode->TARGETS->Build Setitngs->EnableBitcode 为NO
- Xcode->TARGETS->Build Settings->Linking->Other Linker Flags 添加–ObjC 、-lstdc++
- 添加系统依赖库 Xcode->TARGETS->General->Linked Framworks and Libraries 添加一下了依赖库
libz.tbd
libbz2.tbd
libiconv.tbd
libz.1.2.5.tbd
VideoToolbox.framework
- Xcode->TARGETS->Info添加相机权限访问描述
二、SDK使用说明
初始化
请确保在调用人像比对服务前,调用此接口。所以我们建议在应用启动时初始化SDK.
/** 初始化SDK @param appkey 创蓝平台APPkey @param appid 创蓝平台APPid */ +(void)initSDKWithAPPkey:(NSString * _Nonnull)appkey appid:(NSString * _Nonnull)appid;
参数描述
参数 | 是否必填 | 类型 | 说明 |
appkey | 是 | NSString | 人像比对 对应的appkey |
appid | 是 | NSString | 人像比对 对应的appkey |
调用示例:
#import <CLLiveCheck/CLLiveCheck.h> - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customization after application launch. ... //初始化SDK [CheckSDK initSDKWithAPPkey:@"appkey" appid:@"appid"]; ... return YES; }
检测参数配置及调用SDK
#import "CheckLiveViewController.h" //初始化SDK UI CheckLiveViewController *checkLiveViewController = [[CheckLiveViewController alloc] initUserName:@"张三" idCarNumber:@"张三的身份证号" checkLiveDuration:10]; //设置活体检测 动作 传入nil 为 4个动作的随机序列 [checkLiveViewController setDetectionSequence:@[@(BLINK),@(MOUTH),@(NOD),@(YAW)]]; //设置 图片输出方式 以及 活体检测复杂度 [checkLiveViewController setOutputType:OUTPUT_MULTI_IMAGE complexity:COMPLEXITY_NORMAL]; //hack 检测设置 (2.0新增)默认为NO [checkLiveViewController setHackCheck:YES]; //设置人像核验结果回调 [checkLiveViewController setResultBlock:^(ResultType type, NSDictionary * _Nullable result, NSError * _Nullable error) { }]; UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:checkLiveViewController]; nav.navigationBar.translucent = NO; [self presentViewController:nav animated:YES completion:^{ //启动检测流程 [checkLiveViewController startLiveCheck]; }];
参数及其含义:请参考CheckLiveViewController 类注释以及CLEnumTypy.h的定义
人证校验结果 result 示例:
{
"tradeNo":"633756435473235968",
"chargeStatus":1,
"code":"200000",
"message":"成功",
"data":{
"status":"OK",
"identity":{
"reason":"Gongan status OK",
"validity":true
},
"confidence":0.9357142857142857,
"request_id":"TID3a82aa92639d4eea9f7f44c1b84872b9",
"selfie":{
"image_id":"09ee2fbceb8f44ad80493f2ad1955ff4"
}
}
}
result字段含义:
字段 | 类型 | 说明 |
tradeNo | String | 交易流水号 |
chargeStatus | Bool | 是否收费 |
code | int | 业务码 200000 为成功,其余为失败(特别说明,1102,1103为 hack 接口特有返回码,仅在客户配置需要hack检测且 hack接口失败时 会返回该业务码,1102为网络失败,1103失败详情见message) |
message | String | 业务详情 |
data | Object | 人证比对结果 |
data字段及其含义:
字段 | 类型 | 说明 |
status | String | 状态,正常为OK,其他为失败。(具体见status一览表) |
identity | Object | 身份证号码 与 姓名校验结果 |
confidence | Float | 置信度(0~1)。值越大,代表是相同人的可能性越大(见confidece 表) |
request_id | String | 本次请求id |
selfie/image_id | String | 本次用来与身份证图像对比 的图片的id |
identity 字段及其含义
字段 | 类型 | 说明 |
validity | Bool | 身份证号与姓名校验结果 |
reason | String | 身份证号与姓名校验错误原因 |
confdence 置信度阀值 及 错误率表
阈值 | 0.4 | 0.5 | 0.6 | 0.7 | 0.8 | 0.9 |
错误率 | 十分之一 | 百分之一 | 千分之一 | 万分之一 | 十万分之一 | 百万分之一 |
status 一览表
1 | PHOTO_SERVICE_ERROR | 数据源服务服务出错,详情见字段reason |
2 | ENCODING_ERROR | 参数非UTF-8编码 |
3 | IMAGE_ID_NOT_EXIST | 图片不存在 |
4 | IMAGE_FILE_SIZE_TOO_BIG | 图片体积过大 |
5 | NO_FACE_DETECTED | 上传的图片未检测出人脸 |
6 | CORRUPT_IMAGE | 文件不是图片文件或已经损坏 |
7 | INVALID_IMAGE_FORMAT_OR_SIZE | 图片大小或格式不符合要求 |
8 | INVALID_ARGUMENT | 请求参数错误,具体原因见 reason 字段内容 |
9 | UNAUTHORIZED | 账号或密钥错误 |
10 | KEY_EXPIRED | 账号过期,具体情况见 reason 字段内容 |
11 | RATE_LIMIT_EXCEEDED | 调用频率超出限额 |
12 | NO_PERMISSION | 无调用权限 |
13 | OUT_OF_QUOTA | 调用次数超出限额 |
14 | NOT_FOUND | 请求路径错误 |
15 | INTERNAL_ERROR | 服务器内部错误 |