产品动态
产品公告


var FaceIdClient *faceid.Clientfunc init() {// 初始化客户端配置对下,您可以指定超时时间和其他配置项prof := profile.NewClientProfile()prof.HttpProfile.ReqTimeout = 60// TODO 需要替换成您调用账号的 SecretId 和 SecretKeycredential := cloud.NewCredential("SecretId", "SecretKey")var err error// 初始化调用慧眼人脸核身服务的客户端FaceIdClient, err = faceid.NewClient(credential, "ap-singapore", prof)if nil != err {log.Fatal("FaceIdClient init error: ", err)}}// ApplySdkVerificationToken 获取人脸核身Tokenfunc ApplySdkVerificationToken(w http.ResponseWriter, r *http.Request) {log.Println("get face id token")// 步骤1: 解析请求参数_ = r.ParseForm()var IdCardType = r.FormValue("IdCardType")var NeedVerifyIdCard = false// 步骤2: 初始化请求对象,并给必要的参数赋值request := faceid.NewApplySdkVerificationTokenRequest()request.IdCardType = &IdCardTyperequest.NeedVerifyIdCard = &NeedVerifyIdCard// 步骤3: 通过FaceIdClient调用人脸核身服务response, err := FaceIdClient.ApplySdkVerificationToken(request)// 步骤4: 处理腾讯云API的响应,并构造返回对象if nil != err {log.Println("error: ", err)_, _ = w.Write([]byte("error"))return}SdkToken := response.Response.SdkTokenapiResp := struct {SdkToken *string}{SdkToken: SdkToken}b, _ := json.Marshal(apiResp)// ... 其他业务处理代码//步骤5: 返回服务响应_, _ = w.Write(b)}// GetFaceIdResult 获取人脸核身核验结果func GetSdkVerificationResult(w http.ResponseWriter, r *http.Request) {// 步骤1: ... 解析请求参数_ = r.ParseForm()SdkToken := r.FormValue("SdkToken")// 步骤2: 初始化请求对象,并给必要的参数赋值request := faceid.NewGetSdkVerificationResultRequest()request.SdkToken = &SdkToken// 步骤3: 通过FaceIdClient调用人脸核身服务response, err := FaceIdClient.GetSdkVerificationResult(request)// Step 4: 处理腾讯云API的响应,并构造返回对象if nil != err {_, _ = w.Write([]byte("error"))return}result := response.Response.ResultapiResp := struct {Result *string}{Result: result}b, _ := json.Marshal(apiResp)// ... 其他业务处理代码//步骤5: 返回服务响应_, _ = w.Write(b)}func main() {// 注册http接口路径http.HandleFunc("/api/v1/get-token", ApplySdkVerificationToken)http.HandleFunc("/api/v1/get-result", GetSdkVerificationResult)// 监听端口err := http.ListenAndServe(":8080", nil)if nil != err {log.Fatal("ListenAndServe error: ", err)}
// 设置ndk so架构过滤(以armeabi-v7a为例,如果支持 arm64-v8a 也可以添加)defaultConfig {ndk {abiFilters 'arm64-v8a'}}dependencies {// Identity verification SDK版本库implementation files("libs/ekyc-v1.0.1.2-release.aar")// 核身组件库implementation files("libs/huiyansdk_android_overseas_1.0.10.5_release.aar")// 人脸模型库(可选):不引入时需通过 EkycHyConfig.setFaceModelPath() 指定外部模型目录路径(目录名为 face-tracker-v003),需自行保证模型文件完整性implementation files("libs/huiyanmodels_1.0.1_release.aar")// Ocr 组件库// OCR 模型库(可选):不引入时需通过 EkycHyConfig.setOcrModelPath() 指定外部模型文件路径(文件名为 subject.iap),需自行保证模型文件完整性implementation files("libs/OcrSDK-common-model-v1.0.0-release.aar")implementation files("libs/OcrSDK-private-v2.0.0.25-release.aar")// 通用能力组件库implementation files("libs/tencent-ai-sdk-youtu-base-1.0.2.1.1-release.aar")implementation files("libs/tencent-ai-sdk-common-1.1.49.8-release.aar")implementation files("libs/tencent-ai-sdk-aicamera-1.0.30.4-release.aar")implementation files("libs/tencent-ai-sdk-network-1.0.2.13-release.aar")// 引入gson三方库implementation 'com.google.code.gson:gson:2.8.9'}
<!-- SDK需要的权限 --><uses-permission android:name="android.permission.CAMERA" /><uses-featureandroid:name="android.hardware.camera"android:required="true" /><uses-feature android:name="android.hardware.camera.autofocus" /><uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
@Overridepublic void onCreate() {super.onCreate();EkycHySdk.init(this);}
EkycHySdk.startEkycCheck()函数,并传入以下参数:// 设置启动的配置EkycHyConfig ekycHyConfig = new EkycHyConfig();// 设置license的名称ekycHyConfig.setLicenseName("ekycLicense.license");ekycHyConfig.setOcrType(OcrRegionType.HK);// 如果需要开启活体RCE能力,需要传入lic文件并打开本地开关,如果不开启则不用修改ekycHyConfig.setRiskLicenseName("risk.lic");ekycHyConfig.setOpenCheckRiskMode(true);// 自定义UI配置OcrUiConfig config = new OcrUiConfig();ekycHyConfig.setOcrUiConfig(config);// 具体的启动核验逻辑// sdkToken 是从服务器端获取的当次流程的唯一凭证EkycHySdk.startEkycCheck(sdkToken, ekycHyConfig, new EkycHyCallBack() {@Overridepublic void onSuccess(EkycHyResult result) {Log.e(TAG, "result: " + result.toString());runOnUiThread(() -> {Toast.makeText(this.getApplicationContext(), "核身成功: " + result.toString(), Toast.LENGTH_SHORT).show();});}@Overridepublic void onFail(int errorCode, String errorMsg, String ekycToken) {Log.e(TAG, "code: " + errorCode + " msg: " + errorMsg + " token: " + ekycToken);String msg = "检测失败,code: " + errorCode + " msg: " + errorMsg + " token: " + ekycToken;runOnUiThread(() -> {Toast.makeText(this.getApplicationContext(), msg, Toast.LENGTH_SHORT).show();});}});
├── app│ ├── build.gradle│ ├── libs│ ├── proguard-rules.pro│ └── src│ └── main│ └── assets│ ├── ekycLicense.license│ └── risk.lic
@Overrideprotected void onDestroy() {EkycHySdk.release();super.onDestroy();}
# 需要混淆的对象-keep class com.google.gson.** {*;}-keep class com.tencent.cloud.** {*;}-keep class com.tencent.youtu.** {*;}-keep class com.tencent.cloud.ocr.** {*;}-keep class com.tencent.cloud.ekyc.** {*;}
// 设置设备风控license文件(需放置在assets目录下)ekycHyConfig.setRiskLicenseName("turing.lic");// 启用设备风控能力ekycHyConfig.setOpenCheckRiskMode(true);
├── HuiYanEKYCVerification.framework├── tnn.framework├── tnnliveness.framework├── YTCommonLiveness.framework├── YTFaceAlignmentTinyLiveness.framework├── YTFaceDetectorLiveness.framework├── YTFaceLiveReflect.framework├── YTFaceTrackerLiveness.framework├── YTPoseDetector.framework├── YtSDKKitActionLiveness.framework├── YtSDKKitFramework.framework├── YtSDKKitReflectLiveness.framework├── YtSDKKitSilentLiveness.framework├── tiny_opencv2.framework├── HuiYanOverseasSDK.framework├── OcrSDKKit.framework├── TXYCommonDevice.framework├── TXYCommonNetworking.framework├── TXYCommonUtils.framework├── YTCv.framework├── YTImageRefiner.framework├── YtSDKKitFrameworkTool.framework└── YTSm.framework
├── libc++.tbd├── Accelerate.framework└── CoreML.framework
├── face-tracker-v003.bundles├── huiyan_verification.bundle├── HuiYanSDKUI.bundle└── OcrSDK.bundle
Pod::Spec.new do |s|s.name = "CloudHuiYanSDK_FW"s.version = "1.0.0"s.platform = :ios, "9.0"s.summary = 'frameworks and bundle resources for youtu mobile hdr's.homepage = 'xxx's.license = 'MIT's.source = {:git => 'xxx' ,:tag => "#{s.version}"}s.static_framework = trues.compiler_flags = "-ObjC"s.author = {'xxx' => 'xxx'}s.pod_target_xcconfig = {'VALID_ARCHS' =>['arm64']}s.subspec 'Framework' do |framework|framework.frameworks = 'Accelerate'framework.vendored_frameworks = 'Frameworks/*.framework'ends.subspec 'Resource' do |resource|resource.resources = 'Resources/*'endend
├──Project├──CloudHuiYanSDK_FW├───────CloudHuiYanSDK_FW.podspec├───────Frameworks├────────────HuiYanEKYCVerification.framework├────────────tnn.framework├────────────tnnliveness.framework├────────────YTCommonLiveness.framework├────────────YTFaceAlignmentTinyLiveness.framework├────────────YTFaceDetectorLiveness.framework├────────────YTFaceLiveReflect.framework├────────────YTFaceTrackerLiveness.framework├────────────YTPoseDetector.framework├────────────YtSDKKitActionLiveness.framework├────────────YtSDKKitFramework.framework├────────────YtSDKKitReflectLiveness.framework├────────────YtSDKKitSilentLiveness.framework├────────────tiny_opencv2.framework├────────────HuiYanOverseasSDK.framework├────────────OcrSDKKit.framework├────────────TXYCommonDevice.framework├────────────TXYCommonNetworking.framework├────────────TXYCommonUtils.framework├────────────YTCv.framework├────────────YTImageRefiner.framework├────────────YtSDKKitFrameworkTool.framework├────────────YTSm.framework├───────Resources├────────────face-tracker-v003.bundles├────────────huiyan_verification.bundle├────────────HuiYanSDKUI.bundle└────────────OcrSDK.bundle
target 'ProjectName' douse_frameworks!pod 'CloudHuiYanSDK_FW', :path => './CloudHuiYanSDK_FW'end
<key>Privacy - Camera Usage Description</key><string>需要访问您的相机权限</string>
#import <HuiYanEKYCVerification/VerificationKit.h>- (void)viewDidLoad {[[VerificationKit sharedInstance] initWithViewController:self];}
VerificationConfig *config = [[VerificationConfig alloc] init];config.licPath = [[NSBundle mainBundle] pathForResource:@"eKYC_license.lic" ofType:nil];config.languageType = HY_EKYC_EN;config.ocrAutoTimeout = 30000;//鉴伪超时时间设置config.livenessAutoTimeout = 15000;//人脸单动作超时设置config.ekycToken = @"";[[VerificationKit sharedInstance] startVerifiWithConfig:config withSuccCallback:^(int errorCode, id _Nonnull resultInfo, id _Nullable reserved) {NSLog(@"ErrCode:%d msg:%@",errorCode,resultInfo);} withFialCallback:^(int errorCode, NSString * _Nonnull errorMsg, id _Nullable reserved) {NSLog(@"ErrCode:%d msg:%@ extra:%@",errorCode,errorMsg,reserved);}];
- (void)dealloc {[VerificationKit clearInstance];}
SDK 版本 | 基础版(SdkVersion 为 BASIC) | 增强版(SdkVersion 为 ENHANCE) | PLUS(SdkVersion 为 PLUS) |
1.0.0.x | ✅ | ❌ | ❌ |
1.0.1.x | ✅ | ✅ | ✅ |
//配置SDKVerificationConfig *config = [[VerificationConfig alloc] init];//设置licconfig.licPath = [[NSBundle mainBundle] pathForResource:@"YTFaceSDK.license" ofType:@""];//若开启设备风险检测,则需要传入风险授权,其中增强版和Plus版需配置开启,基础版无需开启config.openCheckRiskMode = YES;config.riskLicense = [[NSBundle mainBundle] pathForResource:@"turing.license" ofType:@""];
启动模式 | 对应CheckMode值 | 模式说明 |
卡证活体人脸比对模式 | 1 | 该模式包含证件识别、活体检测和人脸比对全部流程 |
活体人脸比对模式 | 2 | 该模式仅包含活体检测和人脸比对全部流程 |
活体人脸检测模式 | 3 | 该模式仅包含活体检测流程 |
文档反馈