# IOS在线活体SDK集成帮助文档
# 1、简介
# 1.1 功能介绍
慧眼SDK iOS 版是一种面向iOS移动设备人脸技术开发包,此版SDK包括活体识别功能。基于该方案,开发者可以轻松的构建包含活体识别的应用。在您使用SDK之前,我们首先为您介绍一下SDK本身及相关人脸能力,以便您能更方便使用。
此版SDK所包含的能力如下:
·活体检测 通过让用户做出指定人脸配合式的交互动作,识别当前操作者是否为活体,此功能为离线使用,可设定指定动作是否使用及应用顺序。动作包含:眨眼、张嘴、向右摇头、向左摇头、向上抬头、向下低头六个。可有效抵御高清图片、3D建模、视频等攻击。
·授权: SDK的授权判断,授权介质也称为license,在SDK使用中,需要通过license向授权服务器发起请求,判断SDK的使用合法性及使用有效期。
# 1.2 兼容性
·系统: 支持iOS8以上系统。需要开发者通过Deployment Target 来保证支持系统的检测。 ·机型: 手机和平板皆可 ·网络: 支持 WIFI 及移动网络,移动网络支持使用 NET 网关及WAP 网关(CMWAP、CTWAP、UNIWAP、3GWAP)。
# 1·3 开发包说明
# 2、集成指南
# 2.1 准备工作
· 申请license: 此license用户活体检测功能使用。
· 申请认证会话Token: 通过在慧眼管理端配置,每次进入SDK都要重新获取。
注意:license授权文件需要您工程的Bundle Id(应用包名)。license和Bundle Id是一一对应关系,填错了会导致SDK不能用。具体流程可联系壹证通商务。
# 2.2配置授权信息集成
//人脸license文件名
#define FACE_LICENSE_NAME @"idl-license"
//人脸license文件后缀
#define FACE_LICENSE_SUFFIX @"face-ios"
您申请的应用名称(appname)+「-face-ios」后缀,如申请的应用名称(appname)为test123,则此处填写test123-face-ios)
#define FACE_LICENSE_ID @"spider-hy-identity-face-ios"
配置好证书,即可运行。注意已经设置好的Bundle ID不要随意改动
# 2.3 添加SDK到工程
1 、SDK包中以下三个文件 拖至项目中:
· LiveDetectionSDKFrame.framework
·com.baidu.idl.face.model.faceSDK.bundle
· com.baidu.idl.face.faceSDK.bundle
· com.baidu.idl.face.live.action.image.bundle
2 、选择添加连接C++标准库
libc++.tbd
如果没有使用Pod管理第三方库的话,请在请在Build Setting >Linking > Other Linker Flags 上面加入 –ObjC 选项。如果用了pod请忽略,因为pod会自动添加上。
# 2.4 添加依赖库
- 添加依赖库,选择
TARGETS -> Build Phases ->Link Binary With Libraries -> Add Files,选择LiveDetectionSDKFrame.framework Frameworks文件下的IDLFaceSDK.framework
如下图所示:
- 依赖库配置
修改Xcode 的配置参数 如图:
# 2.5 权限声明
需要使用相机权限:编辑 Info.plist 文件,添加
Privacy- Camera Usage Description 的Key值,Value为使用相机时候的提示语,可以填写:『使用相机』。
# 3、功能使用
# 3.1 SDK配置
在Appdelegate.m 文件 -(BOOL)application:(UIApplication *)applicationdidFinishLaunchingWithOptions:(NSDictionary *)launchOptions 调用以下代码
NSString* licensePath = [NSString stringWithFormat:@"%@.%@", FACE_LICENSE_NAME, FACE_LICENSE_SUFFIX];[LiveFaceSDKManager setLicenseID:FACE_LICENSE_ID andLocalLicenceFile:licensePath];
# 3.2 SDK调用
[[LiveFaceSDKManager sharedInstance] initWithToken:token];
UnitidLivenessViewController *livenessVC = [[UnitidLivenessViewController alloc] init];
_liveActionArray = [NSMutableArray arrayWithArray:@[@1,@2]];
[livenessVC livenesswithList:_livenessArray order:YES numberOfLiveness:_livenessArray.count];
livenessVC.delegate = self;
// 核验结果代理回调
[self.navigationController pushViewController:livenessVC animated:YES];
其中token为必填项,_livenessArray`为所选动作数组,默认为眨眼动作(为提供用户更好的用户体验,选择单个动作即可)。
# 3.3 SDK结果回调
/*
** 活体检测返回结果代理方法
/*
- (void)livenessDetectionControllerDidGetNetworkResult:(NSDictionary *)response;
typedef NS_ENUM(NSUInteger, SpiderIDResultCode) {
SpiderIDCodeOK = 0, //成功
SpiderIDCodeMANUAL_AUDIT = 1, //提交人工审核成功
SpiderIDCodeCANCEL = 2, //取消
SpiderIDCodeINVAILD_TOKEN = 3, //无效的token
SpiderIDCodeINVAILD_TPAGETOKEN = 4, //获取页面会话token失败
SpiderIDCodeINVAILD_FAILURE = 5, //其他失败
};
/*
** 活体检测取消代理方法
*/
- (void)livenessDetectionControllerDidCancel:(CancelStatus)status;
typedef enum : NSUInteger {
UserCancelStatus, //用户取消
TimeOutStatus, //超时
TokenIllegalStatus, //无效token
} CancelStatus;
# 3.4 接口设计说明
DetectRemindCode
类型名 | DetectRemindCode | |
---|---|---|
名称 | 人脸检测返回类型 | |
所属头文件 | IDLFaceDetectionManager.h | |
类型说明 | Enum 枚举类型 | |
枚举名 | 说明 | 值 |
DetectRemindCodeOK | 正常 | 0 |
DetectRemindCodePitchOutofDownRange | 头部偏低 | 1 |
DetectRemindCodePitchOutofUpRange | 头部偏高 | 2 |
DetectRemindCodeYawOutofLeftRangeE | 头部偏左 | 3 |
DetectRemindCodeYawOutofRightRange | 头部偏右 | 4 |
DetectRemindCodePoorIllumination | 光照不足 | 5 |
DetectRemindCodeNoFaceDetected | 没有检测到人脸 | 6 |
DetectRemindCodeImageBlured | 图像模糊 | 7 |
DetectRemindCodeOcclusionLeftEye | 左眼有遮挡 | 8 |
DetectRemindCodeOcclusionRightEye | 右眼有遮挡 | 9 |
DetectRemindCodeOcclusionNose | 鼻子有遮挡 | 10 |
DetectRemindCodeOcclusionMouth | 嘴巴有遮挡 | 11 |
DetectRemindCodeOcclusionLeftContour | 左脸颊有遮挡 | 12 |
DetectRemindCodeOcclusionRightContour | 右脸颊有遮挡 | 13 |
DetectRemindCodeOcclusionChinCoutour | 下颚有遮挡 | 14 |
DetectRemindCodeTooClose | 太近 | 15 |
DetectRemindCodeTooFar | 太远 | 16 |
DetectRemindCodeBeyondPreviewFrame | 出框 | 17 |
DetectRemindCodeVerifyInitError | 鉴权失败 | 18 |
DetectRemindCodeVerifyDecryptError | 鉴权失败 | 19 |
DetectRemindCodeVerifyInfoFormatError | 鉴权失败 | 20 |
DetectRemindCodeVerifyExpired | 鉴权失败 | 21 |
DetectRemindCodeVerifyMissRequiredInfo | 鉴权失败 | 22 |
DetectRemindCodeVerifyInfoCheckError | 鉴权失败 | 23 |
DetectRemindCodeVerifyLocalFileError | 鉴权失败 | 24 |
DetectRemindCodeVerifyRemoteDataError | 鉴权失败 | 25 |
DetectRemindCodeTimeout | 超时 | 26 |
DetectRemindCodeConditionMeet | 条件满足 | 27 |
FaceLivenessActionType
类型名 | FaceLivenessActionType | |
---|---|---|
名称 | 活体检测命令类型 | |
所属头文件 | FaceSDKManager.h | |
类型说明 | Enum 枚举类型 |
枚举名 | 说明 | 值 |
---|---|---|
FaceLivenessActionTypeLiveEye | 眨眨眼 | 0 |
FaceLivenessActionTypeLiveMouth | 张张嘴 | 1 |
FaceLivenessActionTypeLiveYawRight | 向右摇头 | 2 |
FaceLivenessActionTypeLiveYawLeft | 向左摇头 | 3 |
FaceLivenessActionTypeLivePitchUp | 抬头 | 4 |
FaceLivenessActionTypeLivePitchDown | 低头 | 5 |
FaceLivenessActionTypeLiveYaw | 摇头 | 6 |
FaceLivenessActionTypeNoAction | 没有动作 | 7 |
# 3.5 问题与解决方案
1、
解决方案:
2、线上审核Bundle文件通不过问题修复
(1) 删除com.baidu.idl.face.faceSDK.bundle中的文件 A:com.baidu.idl.face.faceSDK B:Info.plist 如下图所示:
(2)删除com.baidu.idl.face.live.action.image.bundle中的 文件A:com.baidu.idl.face.live.action.image 文件B:Info.plist 如下图所示:
(3)删除com.baidu.idl.face.model.faceSDK.bundle中的 文件A:com.baidu.idl.face.model.faceSDK 文件B:Info.plist 如下图所示:
# 4 版权说明
版权归南京壹证通信息科技有限公司所有,未经许可禁止翻印。