人脸核身提供iOS客户端SDK,帮助您在App中实现刷脸认证功能。您可通过核身认证移动端请求接口获取实人认证唯一标识VerificationToken,并使用VerificationToken唤起人脸核身客户端SDK。本文将结合示例代码进行详细的说明介绍。
阿里云视觉智能开放平台各类目视觉AI能力API接入、接口使用或问题咨询等,请通过钉钉群(23109592)加入阿里云视觉智能开放平台咨询群联系我们。
前提条件
应用必须在iOS 9.0+真机平台上运行。
您必须采用Objective C++集成人脸核身服务。
获取SDK和Demo代码
模拟器使用存在安全风险,暂不支持在模拟器上运行。
开发环境配置
在info.plist中配置摄像头权限请求。
在Xcode的编译设置中关闭Bitcode选项。
在Xcode编译设置的Linking > Other Linker Flags中,添加设置-ObjC。
拷贝资源文件
选择TARGETS,选择Build Phases标签页,在Copy Bundle Resources中添加如下四个bundle:
APBToygerFacade.bundle:位于APBToygerFacade.framework中。
BioAuthEngine.bundle:位于BioAuthEngine.framework中。
OCRXMedia.bundle:所在位置为OCRDetectSDKForTech.framework中。
ToygerService.bundle:所在位置为ToygerService.framework中。
配置依赖
下载iOS SDK(SDK为framework包)后,在Xcode的Link Binary With Libraries添加SDK包和额外系统库依赖。具体如下:
SDK中的包
APBToygerFacade APPSecuritySDK BioAuthEngine DTFIdentityManager DTFMobileRPC DTFUtility OCRDetectSDKForTech ToygerNative ToygerService ZolozFaceAuthFacade
系统库依赖
CoreGraphics.framework Accelerate.framework SystemConfiguration.framework AssetsLibrary.framework CoreTelephony.framework QuartzCore.framework CoreFoundation.framework CoreLocation.framework ImageIO.framework CoreMedia.framework AVFoundation.framework WebKit.framework libresolv.tbd libz.tbd libc++.1.tbd libc++abi.tbd AudioToolbox.framework CFNetwork.framework MobileCoreServices.framework libz.1.2.8.tbd AdSupport.framework
调用SDK
引入头文件。
#import <ZolozFaceAuthFacade/ZolozFaceAuthFacade.h>
初始化SDK。
初始化SDK的代码为:
[ZolozFaceAuthFacade init];
增加初始化接口的目的在于提高身份核验的用户体验,为刷脸认证准备一些必备数据。初始化接口是异步执行,不会影响主线程UI渲染,建议接入方将初始化接口放在appdelegate的如下函数中调用:
-(BOOL)application:(UIApplication)application didFinishLaunchingWithOptions:(NSDictionary)launchOptions
获取metainfo数据。
[ZolozFaceAuthFacade getMetaInfo];
返回值为NSDictionary,接入方移动端需要将其转换为JSON字符串,调用移动端的核身认证移动端请求接口时在请求参数MetaInfo中传入该值。
开始认证。
调用SDK
[ZolozFaceAuthFacade verifyWith:self.verificationToken extParams:extParams onCompletion:^(ZIMResponse *response) {}];
参数说明
verificationToken:NSString类型,通过调用移动端的核身认证移动端请求接口获取VerificationToken的对应值。
说明调用核身认证移动端请求接口返回的verificationToken有效期时间为30分钟,从verificationToken生成时间开始算起,超过有效期再进行人脸认证会报错,请在有效期时间内完成认证。
extParams:NSDictionary类型。必须传入当前viewController,用于展现等待图标和presentViewController。
[extParams setValue:self forKey:@"currentCtr"];
(非必须,默认不返回)返回视频:在extParams里面添加returnVideo,设置值为true,视频存储的路径:verifyWith接口返回的参数里,ZIMResponse类型参数的videoFilePath字段。
[extParams setValue:@"true" forKey:@"returnVideo"];
示例代码
[ZolozFaceAuthFacade verifyWith:self.verificationToken extParams:extParams onCompletion:^(ZIMResponse *response) { dispatch_async(dispatch_get_main_queue(), ^{ NSString *title = @"刷脸成功"; switch (response.code) { case 1000: break; case 1001: title = @"系统错误"; break; case 1003: title = @"用户退出"; break; case 2002: title = @"网络错误"; break; case 2006: title = @"刷脸失败"; break; case 2003: title = @"设备时间不准确"; break; default: break; } }); }];
返回结果espons.code有以下六种返回值,类型为整型。
HttpCode
错误码
描述
1000
ZIMResponseSuccess
表示刷脸成功,该结果仅供参考,可通过移动端核身认证移动端查询获取最终认证结果。
1001
ZIMInternalError
表示系统错误。
1003
ZIMInterrupt
表示验证中断。
2002
ZIMNetworkfail
表示网络错误。
2003
ZIMTIMEError
表示设备时间设置不对。
2006
ZIMResponseFail
表示刷脸失败,如需获取更详细的失败原因,可通过移动端核身认证移动端查询获取最终认证结果。
了解更多信息,请参见iOS客户端错误码详情。
[ZolozFaceAuthFacade verifyWith:self.verificationToken extParams:extParams onCompletion:^(ZIMResponse *response) {}];
response.imageContent:返回采集到的人脸图片数据,格式为NSData。如果用户中途退出或者超时,则图片数据为nil。客户上传图片到移动端时,不能对NSData进行任何压缩或者缩放,因为移动端会对图片做MD5校验,如果有压缩或者缩放,会导致MD5值不一致。将NSData转换成图的示例如下:
UIImage* newImage = [UIImage imageWithData:response.imageContentData];
response.reason和response.retMessageSub:返回原因或者认证文案。
AppStore上架注意事项
AppStore上架时,请确保您的App已申请了如下权限,并在Info.plist中已添加相关说明,否则AppStore将上架失败:
Camera权限,需在Info.plist中已添加NPrivacy - Camera Usage Description说明。
IDFA权限,需在Info.plist中已添加NSUserTrackingUsageDescription说明。说明文字可以结合您的业务情况进行描述,参考文案:“请放心,开启权限不会获取您在其他APP或网站的隐私信息,该权限仅用于标识设备并保障实名认证流程安全、提升服务使用体验。”。