刷脸认证提供iOS客户端SDK,帮助您在您的业务应用(App)中实现刷脸认证功能。您可通过刷脸认证的服务端认证初始化接口,获取刷脸认证唯一标识CertifyId,并使用CertifyId唤起刷脸认证客户端SDK。本文将结合示例代码进行iOS客户端接入的详细说明。
前提条件
- 刷脸认证应用必须运行在iOS 9.0及以上版本的系统上。
- 您的业务应用必须采用Objective C++或Swift集成金融级实人认证服务。
- 您的业务应用中未集成支付宝mPaaS SDK。
配置开发环境
- 在info.plist中配置摄像头权限请求。
- 在Xcode的编译设置中关闭Enable Bitcode选项。
- 在Xcode编译设置的中,添加设置-ObjC -framework "BioAuthAPI" -lxml2。
如果您的工程已设置了
-force_load选项,则需要加入
-force_load <framework path>/AliyunOSSiOS。

- 在Xcode调试设置的中禁用Metal API Validation。
配置依赖
- 下载AliyunFace iOS SDK。
该SDK为framework包。您需要在Xcode添加Link Binary With Libraries、SDK中的15个包和额外系统库依赖。
- 解压下载的SDK包,并在解压的文件夹中执行以下命令提取所有的framework到Products目录。
for i in $(ls *.tgz);do tar xvf $i;done
- SDK中的包:
APPSecuritySDK
MPRemoteLogging
AliyunOSSiOS
BioAuthEngine
ZolozUtility
AliyunIdentityManager
APBToygerFacade
BioAuthAPI
ToygerService
ZolozSensorServices
ZolozOpenPlatformBuild
deviceiOS
ZolozMobileRPC
ZolozIdentityManager
OCRDetectSDKForTech
ToygerNative
- 系统库依赖:
CoreGraphics.framework
Accelerate.framework
SystemConfiguration.framework
AssetsLibrary.framework
CoreTelephony.framework
QuartzCore.framework
CoreFoundation.framework
CoreLocation.framework
ImageIO.framework
CoreMedia.framework
CoreMotion.framework
AVFoundation.framework
WebKit.framework
libresolv.tbd
libz.tbd
libc++.tbd
libc++.1.tbd
libc++abi.tbd
AudioToolbox.framework
CFNetwork.framework
MobileCoreServices.framework
libz.1.2.8.tbd
AdSupport.framework
拷贝资源文件
选择
TARGETS,单击
Build Phases页签,在
Copy Bundle Resources中添加以下4个bundle:
- APBToygerFacade.bundle:位于APBToygerFacade.framework中。
- ToygerNative.bundle:位于ToygerNative.framework中。
- OCRXMedia.bundle:位于OCRDetectSDKForTech.framework中。
- BioAuthEngine.bundle:位于BioAuthEngine.framework中。

调用SDK
- 引入头文件。
命令如下:
#import <AliyunIdentityManager/AliyunIdentityPublicApi.h>
- 初始化SDK。
说明 为了提升用户体验并为刷脸认证准备一些必备的数据,iOS客户端需要进行SDK初始化。您可以在调用
appDelegate
函数(如下示例)和
步骤3获取
metaInfo数据前,这两个位置二选一放置初始化SDK代码。
appDelegate
函数调用,示例代码:
(BOOL)application:(UIApplication)application didFinishLaunchingWithOptions:(NSDictionary)launchOptions {
[AliyunSdk init];// 初始化SDK。
}
- 获取metaInfo数据。
命令如下:
[AliyunSdk init];// 初始化SDK,如果已经在appDelegate函数中调用过,此处无需再重复调用。
[AliyunIdentityManager getMetaInfo]
说明 返回值类型是
NSDictionary,您的服务端需要将其转换为JSON字符串,调用服务端发起认证请求接口时,在入参
metaInfo中传入该值。关于发起认证请求的具体操作,请参见
InitFaceVerify。
- 可选:获取设备指纹。
命令如下:
/*获取设备指纹token。
1,SDK初始化后需要经过一段时间计算才能获取到deviceToken,建议间隔3秒以上。
2,deviceToken短期有效,不能长期缓存使用,不能作为设备唯一标识。
*/
NSString * astring = [AliyunSdk getMobileSession];
说明 调用[AliyunSdk init]
后,才能获取到该结果。
- 调用SDK开始认证。
命令如下:
[[AliyunIdentityManager sharedInstance] verifyWith:certifyId extParams:extParams onCompletion:^(ZIMResponse *response) {}];
参数说明如下表所示。
名称 |
类型 |
描述 |
certifyId |
NSString |
您可以通过服务端发起申请请求接口获取该参数。关于发起认证请求的具体操作,请参见InitFaceVerify。
|
extParams |
NSDictionary |
通过以下代码传入当前viewController,用于展现网络加载和presentViewController。[extParams setValue:self forKey:@"currentCtr"];
- 如需设置OCR的下一步按钮的颜色,在extParams中添加按钮的正常颜色和按钮按下时的颜色。代码示例如下:
[extParams setValue:@"00FF00" forKey:ZIM_EXT_PARAMS_KEY_OCR_BOTTOM_BUTTON_COLOR];
[extParams setValue:@"0000FF" forKey:PARAMS_KEY_OCR_BOTTOM_BUTTON_CLICKED_COLZIM_EXT_OR];
- 如需设置扫脸时的圆圈颜色,在extParams中添加圆圈颜色。代码示例如下:
[extParams setValue:@"FF0000" forKey:ZIM_EXT_PARAMS_KEY_OCR_FACE_CIRCLE_COLOR];
- 如需返回本地视频,在extParams中添加
returnVideo ,并且设置值为true 。代码示例如下:[extParams setValue:@"true" forKey:@"returnVideo"];
- 如需服务端查询接口返回视频,需要额外在extParams中添加
ZIM_EXT_PARAMS_KEY_USE_VIDEO_UPLOAD ,并且设置值为true 。代码示例如下: [extParams setValue:@"true" forKey:ZIM_EXT_PARAMS_KEY_USE_VIDEO_UPLOAD]
说明 金融级实人认证支持设置返回活体检测的视频,默认设置为不返回。如果设置为返回,在您使用金融级实人认证SDK完成认证(不区分认证结果为F或T),并在SDK回调和查询接口时返回视频路径,请您及时处理。
|
返回结果说明:
[[AliyunIdentityManager sharedInstance] verifyWith:certifyId extParams:extParams onCompletion:^(ZIMResponse *response) {}];
response.code
包含以下返回参数,具体说明如下表所示。
错误码 |
错误码文案 |
错误码描述 |
1000(ZIMResponseSuccess) |
刷脸成功 |
代表刷脸成功,该结果仅供参考,可通过服务端查询认证结果接口获取最终认证结果。关于发起认证请求的具体操作,请参见InitFaceVerify。
|
1001(ZIMInternalError) |
系统错误 |
表示系统错误。 |
1003(ZIMInterrupt) |
验证中断 |
表示验证中断。 |
2002(ZIMNetworkfail) |
网络错误 |
表示网络错误。 |
2003(ZIMTIMEError) |
客户端设备时间错误 |
表示客户端设备时间错误。 |
2006(ZIMResponseFail) |
刷脸失败 |
表示刷脸失败,如需获取更详细的失败原因,需调用服务端查询认证结果接口。关于发起认证请求的具体操作,请参见InitFaceVerify。
|
代码示例:
[[AliyunIdentityManager sharedInstance] verifyWith:certifyId extParams:extParams onCompletion:^(ZIMResponse *response) {
dispatch_async(dispatch_get_main_queue(), ^{
NSString *title = @"刷脸成功";
switch (response.code) {
case ZIMResponseSuccess: //1000。
break;
case ZIMInterrupt: //1003。
title = @"用户退出";
break;
case ZIMNetworkfail: //2002。
title = @"网络错误";
break;
case ZIMTIMEError: //2003。
title = @"设备时间设置不对";
break;
case ZIMResponseFail: //2006。
title = @"刷脸失败";
break;
case ZIMInternalError: //1001。
title = @"初始化失败";
break;
default:
break;
}
Demo代码包
您可以下载以下iOS Demo代码包进行体验。在使用过程中,请替换iOS Demo代码包中的文件的版本为最新的版本:
SDK包大小裁剪说明
当您对SDK包大小有限制时,可以根据如下情况进行裁剪:
- 如果您之前没有使用过支付宝开放平台版,或开放平台版代码已经下线,可以在SDK包中删除ZolozIdentityManager、ZolozMobileRPC内容。
- 如果您不需要使用OCR功能,可以在SDK包中删除OCRDetectSDKForTech内容,并删除对应的bundle(OCRXMedia.bundle)。