Link Binary With Libraries导入相关Framework
├──HuiYanSDK.framework
├──YtSDKKitSilentLiveness.framework
├──YtSDKKitReflectLiveness.framework
├──YtSDKKitActionLiveness.framework
├──YtSDKKitFramework.framework
├──tnnliveness.framework
├──YTFaceAlignmentTinyLiveness.framework
├──YTFaceTrackerLiveness.framework
├──YTFaceDetectorLiveness.framework
├──YTPoseDetector.framework
├──YTCommonLiveness.framework
└──YTFaceLiveReflect.framework
├── AVFoundation.framework
├── libc++.tbd
└── Accelerate.framework
└── face-tracker-v001.bundle
└── HuiYanSDKUI.bundle
target 'HuiYanAuthDemo' do
use_frameworks!
pod 'CloudHuiYanSDK_FW', :path => './CloudHuiYanSDK_FW'
end
文件层级和具体的设置可以参考Demo
SDK需要手机网络及 摄像头使用权限,请添加对应的权限声明。在主项目info.plist 配置中添加下面key-value值
<key>Privacy - Camera Usage Description</key>
<string>人脸核身需要开启您的摄像头权限,用于人脸识别</string>
下图展示了SDK、客户端以及服务器端的整体交互逻辑。
在使用慧眼SDK之前,需要调用此方法传入基本配置参数,同时通过回调拉取本地的配置参数信息
// HuiYanOs的相关参数
HuiYanOsConfig *config = [[HuiYanOsConfig alloc] init];
// license文件在bundle中的路径
config.authLicense = [[NSBundle mainBundle] pathForResource:@"YTFaceSDK.license" ofType:@""];
// 活体检测本地检测超时时间(ms)
config.authTimeOutMs = 20000;
// 启动核身前,拉取本地的配置参数信息
[HuiYanOsApi startGetAuthConfigData:config withSuccCallback:^(NSString * _Nonnull result) {
// 获取配置信息成功, 将配置信息发送给服务器,兑换启动核身配置,服务器下发的光线序列(客户自己实现)
NSString *liveData = [self getLiveDataWith:result];
} withFialCallback:^(int errCode, NSString * _Nonnull errMsg) {
// 获取配置参数失败(客户自己实现)
NSLog(@"errCode:%d, errMsg:%@", errCode, errMsg);
}];
当您已经将配置信息从服务器端兑换完成之后,将服务器下发的LightData也就是核身的光线序列,通过此接口传入继续完成剩余本地核身功能。
[HuiYanOsApi startAuthByLightData:liveData withSuccCallback:^(NSData * _Nonnull data, NSString * _Nonnull videoPath) {
//活体通过检测结果数据
// 1. 将本地核身的数据信息,发送到服务器端做比对验证,得到最终结果。(客户自己实现)
[self checkAuthResultByData:data];
// 2. 处理本地核身视频videoPath。(客户自己实现)
[self dealWithAuthVideo:videoPath];
} withFialCallback:^(int errCode, NSString * _Nonnull errMsg) {
// 本地核身失败获取,发生错误
NSLog(@"errCode:%d, errMsg:%@", errCode, errMsg);
}];
tips :当getLightData出现异常时,需要退出SDK,则可以调用 HuiYanOsApi startAuthByLightData:nil withSuccCallback:nil withFialCallback:nil 方法结束当前SDK会话。在startGetAuthConfigData中FialCallback返回错误回调。 swift 项目可调用HuiYanOsApi.stopAuth
在您APP退出使用的时候,可以调用SDK资源释放接口
// 退出时做资源释放
- (void)dealloc {
[HuiYanOsApi release];
}
慧眼SDK主要涉及如下几个类,它们分别是API的接口类HuiYanOsApi, 参数配置类HuiYanOsConfig,结果回调类HuiYanConfigCallback以及HuiYanResultCallBack。
API | 功能描述 |
---|---|
资源释放接口 | |
获取慧眼SDK本地配置信息的接口 | |
传入服务器获取的光线序列,继续完成活体核身检测的接口 |
+ (void)release;
功能介绍:
慧眼SDK资源释放的接口。
+ (void)startGetAuthConfigData:(HuiYanOsConfig *)huiYanOsConfig
withSuccCallback:(HuiYanConfigSuccCallback)huiYanConfigSuccCallback
withFialCallback:(HuiYanConfigFailCallback)huiYanConfigFailCallback;
功能介绍:
本地检测慧眼SDK同时拉取配置参数,用来作为后续兑换光线序列的参数。
传入参数:
参数类型 | 参数名称 | 参数含义 |
---|---|---|
huiYanOsConfig | 配置的参数 | |
huiYanConfigSuccCallback | 拉取配置结果成功的回调 | |
huiYanConfigFailCallback | 拉取配置结果失败的回调 |
+ (void)startAuthByLightData:(NSString *)lightData
withSuccCallback:(HuiYanResultSuccCallback)huiYanResultSuccCallback
withFialCallback:(HuiYanResultFailCallback)huiYanResultFailCallback;
功能介绍:
将从服务器拉取到的光线序列数据,传入慧眼SDK同时继续核身流程,并获取本地检测的结果。
传入参数:
参数类型 | 参数名称 | 参数含义 |
---|---|---|
NSString | lightData | 从服务器兑换来启动核身使用的光线序列Base64 |
huiYanResultSuccCallback | 本地核身的结果成功回调 | |
huiYanResultFailCallback | 本地核身的结果失败回调 |
HuiYanOsConfig是在启动慧眼SDK时的配置实体类,主要包含了以下属性。
类型 | 名称 | 含义 | 默认值 |
---|---|---|---|
NSString | authLicense | 客户申请的用户核审授权的Licens文件名 | 空 |
long | authTimeOutMs | 设置活体检测的超时时间 | 10000毫秒(10秒) |
BOOL | isDeleteVideoCache | 是否删除核身视频的本地缓存 | YES |
BOOL | iShowTipsPage | 是否显示引导页 | NO |
NSString | userLanguageFileName | 自定义的languageBundle 名称 比如 UseLanguage.bundle 则设置为"UseLanguage"; | nil |
NSString | userLanguageBundleName | 自定义本地国际化文件名 比如 en.lproj 则设置为"en"; | nil |
languageType | SDK内部文字语言设置 | DEFAULT |
初始化并且获取本地配置成功的回调
/**
* 初始化成功回调
*
* @param result 初始化回调数据
*/
typedef void (^HuiYanConfigSuccCallback)(NSString * _Nonnull result);
初始化并且获取本地配置失败的回调
/**
* 初始化失败回调
*
* @param errCode 错误码
* @param errMsg 错误信息
*/
typedef void (^HuiYanConfigFailCallback)(int errCode, NSString * _Nonnull errMsg);
本地核身流程与本地结果获取成功的回调
/**
* 活体核身成功回调
*
* @param data 活体比对数据,GZip压缩后的数据
* @param videoPath 活体视频路径
*/
typedef void (^HuiYanResultSuccCallback)(NSData * _Nonnull data, NSString * _Nonnull videoPath);
本地核身流程与本地结果获取失败的回调
/**
* 活体核身失败回调
*
* @param errCode 错误码
* @param errMsg 错误信息
*/
typedef void (^HuiYanResultFailCallback)(int errCode, NSString * _Nonnull errMsg);
SDK内包含的国际化String
typedef enum : NSUInteger {
DEFAULT = 0,//跟随系统设置
ZH_HANS,//中文简体
ZH_HANT,//中文繁体
ZH_HK,//中文繁体香港
ZH_TW,//中文繁体台湾
EN,//英文
MS,//马来西亚语
RU,//俄语
JA,//日语
CUSTOMIZE_LANGUAGE, //定制语言
} LanguageType;
##SDK终端错误码(iOS)
HY_SUCCESS = 0,
// 初始化参数异常
HY_INITIALIZATION_PARAMETER_EXCEPTION = 210,
// bundle配置异常
HY_BUNDLE_CONFIGURATION_EXCEPTION = 211,
// 优图配置异常
HY_YTSDK_CONFIGURATION_EXCEPTION = 212,
// 先调用初始化接口
HY_PLEASE_CALL_FIRST_INIT_API = 213,
// SDK 授权失败
HY_SDK_AUTH_FAILED = 214,
// 用户手动取消
HY_USER_VOLUNTARILY_CANCELED = 215,
// SDK 人脸本地检测失败
HY_YTSDK_LOCAL_AUTH_FAILED = 216,
// 相机开启失败
HY_CAMERA_OPEN_FAIL = 217,
// 请勿在核身过程中切换应用
HY_DONOT_SWITCH_APPS = 218,
// 摄像头权限异常
HY_CAMEREA_PERMISSION_EXCEPTION = 219,
// 视频裁剪失败
HY_SDK_VEDIO_CUT_EXCEPTION = 220,
// 光线数据格式错误
HY_LIGHT_DATA_FORMAT_EXCEPTION = 221
1.将自定义UseLanguage.bundle添加至项目中(Copy Bundle Resources)
自定义UseLanguage.bundle可参考这里https://cloud.tencent.com/developer/article/2016821
2.配置设置如下
HuiYanOsConfig *config = [[HuiYanOsConfig alloc] init];
config.languageType = CUSTOMIZE_LANGUAGE;
config.userLanguageFileName = @"ko";//例:设置 ko.lproj
config.userLanguageBundleName = @"UseLanguage";//自定义打包bundle名称 例: UseLanguage.bundle
若config.languageType = DEFAULT;则会从自定义Bundle找该地区的语言文件,若是未找到则默认为EN。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。