本文为您介绍了IOS客户端如何接入活体认证功能。
1. 概述
下载SDK后进行解压,解压后包含四个文件是:
- 阿里云号码认证iOS v2对外统一接入文档。
- 阿里云号码认证iOS 活体认证接入文档。
- SceneDemo 工程。
- ATAuthSDK.framework。
- 活体认证功能相关framework:APPSecuritySDK、MPRemoteLogging、AliyunOSSiOS、BioAuthEngine、ZolozUtility、AliyunIdentityManager、APBToygerFacade、BioAuthAPI、ToygerService、ZolozSensorServices、ZolozOpenPlatformBuild、YunCeng。
2. SDK 接入说明
2.1 前提条件
- 刷脸认证应用必须运行在iOS 9.0+平台上。
- 您的应用中未集成支付宝mPaaS SDK。
2.2 开发环境配置
- 在info.plist中配置摄像头权限请求。
- 在Xcode的编译设置中关闭Bitcode选项。
- 在Xcode编译设置的-ObjC -framework "BioAuthAPI" -lxml2。如果您的工程已设置了-force_load选项,则需要加入-force_load <framework path>/AliyunOSSiOS。
- 在Xcode调试设置的Metal API Validation。
2.3 配置依赖
在Xcode添加Link Binary With Libraries,1个号码认证基础包、12个活体认证依赖包和额外系统库依赖。具体如下:
- 号码认证基础包
ATAuthSDK
- 活体认证依赖包
APPSecuritySDK MPRemoteLogging AliyunOSSiOS BioAuthEngine ZolozUtility AliyunIdentityManager APBToygerFacade BioAuthAPI ToygerService ZolozSensorServices ZolozOpenPlatformBuild YunCeng
- 系统库依赖
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
2.4 拷贝资源文件
选择TARGETS,单击Build Phases标签页,在Copy Bundle Resources中添加1个号码认证Bundle和4个活体认证相关Bundle:

- 号码认证Bundle。
ATAuthSDK.bundle:所在位置在ATAuthSDK.framework中。
- 活体认证相关Bundle。
- APBToygerFacade.bundle:所在位置在APBToygerFacade.framework中。
- ToygerService.bundle:所在位置在ToygerService.framework中。
- BioAuthEngine.bundle:所在位置在BioAuthEngine.framework中。
- OCRXMedia.bundle:所在位置在AliyunIdentityManager.framework中。

3. SDK方法说明
3.1 活体认证加速
1. /**
2. * 函数名:accelerateLifeBodyVerify
3. * @brief 活体认证加速接口,提前调用可为 lifeBodyVerify 拉起活体认证页面缩短时间
4. */
5. - (void)accelerateLifeBodyVerify;
3.2 开始活体认证
1. /**
2. * 函数名:lifeBodyVerifyWithTimeout:controller:complete:
3. * @brief 开始活体认证
4. * @param timeout 拉起认证页超时时间,单位s,默认为20.0s
5. * @param controller 唤起活体认证页的容器,内部会对其进行验证,检查是否符合条件
6. * @param complete 认证过程中的失败及认证有结果会调用该block,"resultDic"里面的"resultCode"值请参考PNSReturnCode,如下:
* 700005(活体认证页准备启动,可结束loading)、700000(用户主动取消操作)
* 600017(秘钥解析错误)、600034(不合法的秘钥)、600035(状态繁忙)、600033(功能不可用)、
* 600036(业务停机)、600000(认证成功)、600015(唤起认证页超时)、600030(认证失败)、
* 600031(网络错误)、600032(客户端设备时间错误)
8. */
9. - (void)lifeBodyVerifyWithTimeout:(NSTimeInterval)timeout
controller:(UIViewController *_Nonnull)controller
complete:(void (^_Nullable)(NSDictionary * _Nonnull resultDic))complete;
4. SDK使用示例
4.1 引入头文件
#import <ATAuthSDK/ATAuthSDK.h>
4.2 初始化SDK
[[TXCommonHandler sharedInstance] setAuthSDKInfo:<# 请填写客户秘钥,从控制台上可复制 #>
complete:^(NSDictionary * _Nonnull resultDic) {
NSLog(@"设置秘钥结果:%@", resultDic);
}];
4.3 加速活体认证页面拉起(选调)
[[TXCommonHandler sharedInstance] accelerateLifeBodyVerify];
4.4 拉起活体认证页开始认证
//这里开始等待动画
[[TXCommonHandler sharedInstance] lifeBodyVerifyWithTimeout:20.0
controller:self
complete:^(NSDictionary * _Nonnull resultDic) {
NSString *resultCode = [resultDic objectForKey:@"resultCode"];
if ([PNSCodeLiftBodyVerifyReadyStating isEqualToString:resultCode]) {
//开始拉起授权页,暂停掉自己的等待动画
} else {
if ([PNSCodeSuccess isEqualToString:[resultDic objectForKey:@"resultCode"]]) {
NSString *token = [resultDic objectForKey:@"token"];
//这里拿着Token去服务端校验
} else {
//其他回调时也要停掉自己的等待动画,比方说请求失败的情况下
}
}
}];
5. SDK返回码
返回码 | 返回码描述 | 建议 |
600000 | 认证成功 | 无 |
600030 | 认证失败 | 根据返回msg排查对应错误 |
600031 | 网络错误 | 检查手机网络后重试 |
600032 | 客户端设备时间错误 | 检查手机时间后重试 |
600033 | 功能不可用 | 需要到控制台开通对应功能 |
600034 | 不合法的SDK密钥 | 开通相应功能后需要到控制台粘贴新秘钥 |
600035 | 状态繁忙 | 不能连续调用认证接口 |
600036 | 业务停机 | 控制台开通或续费 |
700000 | 取消认证 | 用户主动取消操作UI事件,用户取消操作 |
700005 | 活体认证页面准备启动 | 接收到该code可以消掉等待动画 |
除阿里云SDK返回码外,运营商返回码见阿里云官网运营商SDK错误码。
6. iOS常见问题
1、集成SDK后真机运行报 Unable to install "xxxx"
答:在 target -> Build Phases -> Embed Frameworks 里面勾选上Copy onlu when installing。

在文档使用中是否遇到以下问题
更多建议
匿名提交