刷脸认证提供iOS客户端SDK,帮助您在App中实现刷脸认证功能。您可通过刷脸认证的服务端认证初始化接口,获取刷脸认证唯一标识CertifyId,并使用CertifyId唤起刷脸认证客户端SDK。本文将结合示例代码进行iOS客户端接入的详细说明。

前提条件

  • 刷脸认证应用必须运行在iOS 9.0+平台上。
  • 您必须采用Objective C++或Swift集成金融级实人认证服务。
  • 您的应用中未集成支付宝mPaaS SDK。

开发环境配置

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

配置依赖

下载AliyunFace iOS SDK。SDK为framework包,下载后您需要在Xcode添加Link Binary With Libraries、SDK中的10个包和额外系统库依赖。具体如下:
  • SDK中的包:
    APPSecuritySDK
    MPRemoteLogging
    AliyunOSSiOS
    BioAuthEngine
    ZolozUtility
    AliyunIdentityManager
    APBToygerFacade
    BioAuthAPI
    ToygerService
    ZolozSensorServices
    ZolozOpenPlatformBuild
    deviceiOS
  • 系统库依赖:
    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中添加以下四个bundle:
  • APBToygerFacade.bundle:位于APBToygerFacade.framework中。
  • ToygerService.bundle:位于ToygerService.framework中。
  • BioAuthEngine.bundle:位于BioAuthEngine.framework中。
  • OCRXMedia.bundle:位于AliyunIdentityManager.framework中。
copy

调用SDK

  1. 引入头文件。
    命令如下:
    #import <AliyunIdentityManager/AliyunIdentityPublicApi.h>
  2. 初始化SDK。
    命令如下:
    [AliyunSdk init]
    增加初始化接口的目的提高身份核验的用户体验,为刷脸认证准备一些必备的数据。初始化接口是异步执行,不会影响主线程UI渲染,建议接入方将初始化接口放在appdelegate的以下函数中调用,方法如下:
    (BOOL)application:(UIApplication)application didFinishLaunchingWithOptions:(NSDictionary)launchOptions
  3. 获取metaInfo数据。
    命令如下:
    [AliyunIdentityManager getMetaInfo]
    说明 返回值类型是NSDictionary,您的服务端需要将其转换为JSON字符串,调用服务端发起认证请求接口(具体请参见发起认证请求)时,在入参metaInfo中传入该值。
  4. 可选:获取设备指纹。
    命令如下:
    /*获取设备指纹token。
    1,SDK初始化后需要经过一段时间计算才能获取到deviceToken,建议间隔3秒以上。
    2,deviceToken短期有效,不能长期缓存使用,不能作为设备唯一标识。
    */
    
    NSString * astring = [AliyunSdk getMobileSession];             
    说明 调用[AliyunSdk init]后,才能获取到该结果。
  5. 调用SDK开始认证。
    命令如下:
    [[AliyunIdentityManager sharedInstance] verifyWith:certifyId extParams:extParams onCompletion:^(ZIMResponse *response) {}];
    参数说明如下表所示。
    名称 类型 描述
    certifyId NSString 您可以通过服务端发起申请请求接口(具体请参见发起认证请求)获取该参数。
    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"];
      说明
      • 金融级实人认证支持设置返回活体检测的本地视频,默认设置为不返回。如果设置为返回,在您使用金融级实人认证SDK完成认证(不区分认证结果为F或T)并在SDK回调时,返回视频路径,请您及时处理。
      • 金融级实人认目前仅支持返回本地视频,您无法通过服务端查询接口获取本地视频。
    返回结果说明:
    [[AliyunIdentityManager sharedInstance] verifyWith:certifyId extParams:extParams onCompletion:^(ZIMResponse *response) {}];
    response.code有以下五种返回参数,具体说明如下表所示。
    错误码 错误码文案 错误码描述
    1000(ZIMResponseSuccess) 刷脸成功 代表刷脸成功,该结果仅供参考,可通过服务端查询认证结果接口(具体请参见查询认证结果)获取最终认证结果。
    1001(ZIMInternalError) 系统错误 表示系统错误。
    1003(ZIMInterrupt) 验证中断 表示验证中断。
    2002(ZIMNetworkfail) 网络错误 表示网络错误。
    2003(ZIMTIMEError) 客户端设备时间错误 表示客户端设备时间错误。
    2006(ZIMResponseFail) 刷脸失败 表示刷脸失败,如需获取更详细的失败原因,需调用服务端查询认证结果接口(具体请参见查询认证结果)。
    说明 更多错误码信息请参见iOS客户端错误码详情
    代码示例:
    [[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;
                 }

AppStore上架注意事项

AppStore上架时,请确保您的App已申请了IDFA权限,并在Info.plist中已添加了NSUserTrackingUsageDescriptionPrivacy - Camera Usage Description说明,否则AppStore将上架失败。

Demo代码包

您可以下载以下iOS Demo代码包进行体验: