iOS客户端接入教程

人脸核身提供iOS客户端SDK,帮助您在App中实现刷脸认证功能。您可通过核身认证移动端请求接口获取实人认证唯一标识VerificationToken,并使用VerificationToken唤起人脸核身客户端SDK。本文将结合示例代码进行详细的说明介绍。

说明

阿里云视觉智能开放平台各类目视觉AI能力API接入、接口使用或问题咨询等,请通过钉钉群(23109592)加入阿里云视觉智能开放平台咨询群联系我们。

前提条件

  • 应用必须在iOS 9.0+真机平台上运行。

  • 您必须采用Objective C++集成人脸核身服务。

获取SDK和Demo代码

  • 下载iOS SDK

  • 下载iOS Demo

    下载iOS Demo后需要修改bundle Identifier。

重要

模拟器使用存在安全风险,暂不支持在模拟器上运行。

开发环境配置

  1. 在info.plist中配置摄像头权限请求。

    权限请求

  2. 在Xcode的编译设置中关闭Bitcode选项。

    Bitcode

  3. 在Xcode编译设置的Linking > Other Linker Flags中,添加设置-ObjC

    image

拷贝资源文件

选择TARGETS,选择Build Phases标签页,在Copy Bundle Resources中添加如下四个bundle:

  • APBToygerFacade.bundle:位于APBToygerFacade.framework中。

  • BioAuthEngine.bundle:位于BioAuthEngine.framework中。

  • OCRXMedia.bundle:所在位置为OCRDetectSDKForTech.framework中。

  • ToygerService.bundle:所在位置为ToygerService.framework中。

image

配置依赖

下载iOS SDK(SDK为framework包)后,在Xcode的Link Binary With Libraries添加SDK包和额外系统库依赖。具体如下:

  • SDK中的包

    APBToygerFacade
    APPSecuritySDK
    BioAuthEngine
    DTFIdentityManager
    DTFMobileRPC
    DTFUtility
    OCRDetectSDKForTech
    ToygerNative
    ToygerService
    ZolozFaceAuthFacade
  • 系统库依赖

    CoreGraphics.framework
    Accelerate.framework
    SystemConfiguration.framework
    AssetsLibrary.framework
    CoreTelephony.framework
    QuartzCore.framework
    CoreFoundation.framework
    CoreLocation.framework
    ImageIO.framework
    CoreMedia.framework
    AVFoundation.framework
    WebKit.framework
    libresolv.tbd
    libz.tbd
    libc++.1.tbd
    libc++abi.tbd
    AudioToolbox.framework
    CFNetwork.framework
    MobileCoreServices.framework
    libz.1.2.8.tbd
    AdSupport.framework

调用SDK

  1. 引入头文件。

    #import <ZolozFaceAuthFacade/ZolozFaceAuthFacade.h>
  2. 初始化SDK。

    初始化SDK的代码为:

    [ZolozFaceAuthFacade init];

    增加初始化接口的目的在于提高身份核验的用户体验,为刷脸认证准备一些必备数据。初始化接口是异步执行,不会影响主线程UI渲染,建议接入方将初始化接口放在appdelegate的如下函数中调用:

    -(BOOL)application:(UIApplication)application didFinishLaunchingWithOptions:(NSDictionary)launchOptions
  3. 获取metainfo数据。

    [ZolozFaceAuthFacade getMetaInfo];

    返回值为NSDictionary,接入方移动端需要将其转换为JSON字符串,调用移动端的核身认证移动端请求接口时在请求参数MetaInfo中传入该值。

  4. 开始认证。

    • 调用SDK

      [ZolozFaceAuthFacade verifyWith:self.verificationToken extParams:extParams onCompletion:^(ZIMResponse *response) {}];
    • 参数说明

      • verificationToken:NSString类型,通过调用移动端的核身认证移动端请求接口获取VerificationToken的对应值。

        说明

        调用核身认证移动端请求接口返回的verificationToken有效期时间为30分钟,从verificationToken生成时间开始算起,超过有效期再进行人脸认证会报错,请在有效期时间内完成认证。

      • extParams:NSDictionary类型。必须传入当前viewController,用于展现等待图标和presentViewController。

        [extParams setValue:self forKey:@"currentCtr"];

        (非必须,默认不返回)返回视频:在extParams里面添加returnVideo,设置值为true,视频存储的路径:verifyWith接口返回的参数里,ZIMResponse类型参数的videoFilePath字段。

        [extParams setValue:@"true" forKey:@"returnVideo"];
    • 示例代码

      [ZolozFaceAuthFacade verifyWith:self.verificationToken extParams:extParams onCompletion:^(ZIMResponse *response) {
          dispatch_async(dispatch_get_main_queue(), ^{
            NSString *title = @"刷脸成功";
            switch (response.code) {
              case 1000:
                  break;
              case 1001:
                  title = @"系统错误";
                  break;
              case 1003:
                  title = @"用户退出";
                  break;
              case 2002:
                  title = @"网络错误";
                  break;
              case 2006:
                  title = @"刷脸失败";
                  break;
              case 2003:
                  title = @"设备时间不准确";
                  break;
              default:
                  break;
          }
        });
      }];
    • 返回结果espons.code有以下六种返回值,类型为整型。

      HttpCode

      错误码

      描述

      1000

      ZIMResponseSuccess

      表示刷脸成功,该结果仅供参考,可通过移动端核身认证移动端查询获取最终认证结果。

      1001

      ZIMInternalError

      表示系统错误。

      1003

      ZIMInterrupt

      表示验证中断。

      2002

      ZIMNetworkfail

      表示网络错误。

      2003

      ZIMTIMEError

      表示设备时间设置不对。

      2006

      ZIMResponseFail

      表示刷脸失败,如需获取更详细的失败原因,可通过移动端核身认证移动端查询获取最终认证结果。

      了解更多信息,请参见iOS客户端错误码详情

      [ZolozFaceAuthFacade verifyWith:self.verificationToken extParams:extParams onCompletion:^(ZIMResponse *response) {}];

      response.imageContent:返回采集到的人脸图片数据,格式为NSData。如果用户中途退出或者超时,则图片数据为nil。客户上传图片到移动端时,不能对NSData进行任何压缩或者缩放,因为移动端会对图片做MD5校验,如果有压缩或者缩放,会导致MD5值不一致。将NSData转换成图的示例如下:

      UIImage* newImage = [UIImage imageWithData:response.imageContentData];

      response.reason和response.retMessageSub:返回原因或者认证文案。

AppStore上架注意事项

AppStore上架时,请确保您的App已申请了如下权限,并在Info.plist中已添加相关说明,否则AppStore将上架失败:

  • Camera权限,需在Info.plist中已添加NPrivacy - Camera Usage Description说明。

  • IDFA权限,需在Info.plist中已添加NSUserTrackingUsageDescription说明。说明文字可以结合您的业务情况进行描述,参考文案:“请放心,开启权限不会获取您在其他APP或网站的隐私信息,该权限仅用于标识设备并保障实名认证流程安全、提升服务使用体验。”。