本文为您介绍了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 开发环境配置

  1. info.plist中配置摄像头权限请求。
    1
  2. 在Xcode的编译设置中关闭Bitcode选项。
    2
  3. 在Xcode编译设置的Linking>Other Linker Flags中,添加设置 -ObjC -framework "BioAuthAPI" -lxml2。如果您的工程已设置了-force_load选项,则需要加入-force_load <framework path>/AliyunOSSiOS
    3
  4. 在Xcode调试设置的Edit Scheme>Run>Options中禁用Metal API Validation
    4

2.3 配置依赖

在Xcode添加Link Binary With Libraries1个号码认证基础包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中。
6

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

5