本文为您介绍了iOS客户端如何接入活体认证功能。

前提条件

  • 活体认证应用必须运行在iOS 9.0及以上版本的平台上。
  • 您的应用已集成支付宝mPaaS SDK。

步骤一:开发环境配置

  1. 下载并解压iOS SDK。登录号码认证产品控制台,在概览页面右侧,选择增强版选项卡,下载并解压iOS SDK。
  2. info.plist文件中配置摄像头权限请求。1
  3. 将Xcode编译设置的Build Settings > Build Options > Enable Bitcode设置为No。2
  4. 在Xcode编译设置的Linking > Other Linker Flags中,添加设置 -ObjC -framework "BioAuthAPI" -lxml2。如果您的工程已设置了-force_load选项,则需要加入-force_load <framework path>/AliyunOSSiOS3
  5. 将Xcode调试设置的Edit Scheme > Run > OptionsMetal API Validation设置为Disabled。4

步骤二:配置依赖

在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

步骤三:拷贝资源文件

选择TARGETS,单击Build Phases > Copy Bundle Resources,添加1个号码认证Bundle和4个活体认证相关Bundle。
  • 号码认证Bundle。ATAuthSDK.bundle所在位置如下图所示:image_30
  • 活体认证相关Bundle。
    • APBToygerFacade.bundle:所在位置在APBToygerFacade.framework中。
    • ToygerService.bundle:所在位置在ToygerService.framework中。
    • BioAuthEngine.bundle:所在位置在BioAuthEngine.framework中。
    • OCRXMedia.bundle:所在位置在AliyunIdentityManager.framework中。

功能示例

  • 活体认证加速
    1. /**
    2.  * 函数名:accelerateLifeBodyVerify
    3.  * @brief活体认证加速接口,提前调用可为lifeBodyVerify拉起活体认证页面缩短时间
    4.  */
    5.  - (void)accelerateLifeBodyVerify;
  • 开始活体认证
    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;

SDK使用示例

  • 引入头文件
    #import <ATAuthSDK/ATAuthSDK.h>
  • 初始化SDK
    
    [[TXCommonHandler sharedInstance] setAuthSDKInfo:<#请填写您的密钥,从控制台上可复制#>
                                            complete:^(NSDictionary * _Nonnull resultDic) {
        NSLog(@"设置密钥结果:%@", resultDic);
    }];
  • 拉起活体认证页面开始认证
    //这里开始等待动画
    [[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 {
                //其他回调时也需暂停您的等待动画。比如请求失败的情况
            }
        }
    }];

SDK返回码

返回码 描述 解决方案
600000 认证成功 无。
600030 认证失败 根据返回msg排查对应错误。
600031 网络错误 检查手机网络后重试。
600032 客户端设备时间错误 检查手机时间后重试。
600033 功能不可用 前往控制台开通对应功能。
600034 不合法的SDK密钥 开通相应功能后,前往控制台复制新密钥。
600035 状态繁忙 不能连续调用认证接口。
600036 业务停机 开通控制台或续费。
700000 取消认证 用户主动取消操作UI事件,用户取消操作。
700005 活体认证页面准备启动 接收到该code可关闭等待动画。