增强版实人认证服务提供iOS客户端SDK,帮助您在App中实现实人认证功能。您可通过服务端认证初始化接口,获取唯一标识CertifyId,并使用CertifyId唤起客户端SDK。本文介绍了在iOS客户端集成增强版活体检测SDK的详细流程。

前提条件

  • 应用支持在iOS 9.0+版本的平台上运行。
  • 应用支持Objective-C或Swift集成服务。

配置开发环境

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

    添加Privacy - Camera Usage Description描述,例如:“App需要使用相机,是否允许?”

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

    设置路径:Build Settings > Build Options > Enable Bitcode,设置为NO即可。

  3. 在Xcode编译设置中添加设置-ObjC选项。

    设置路径:Build Settings > Linking > Other Linker Flags,添加-ObjC

配置依赖

  1. 下载增强版活体检测SDK(iOS)。SDK为.zip包。
  2. 在Xcode设置Link Binary With Libraries,添加SDK中的framework和额外的系统库依赖。具体如下:
    • SDK中的包:
      # 活体检测组件。
      AliyunIdentityFace.framework
      ToygerService.framework
      
      # 卡证核身调度组件。
      AliyunIdentityPlatform.framework
      
      # 实用工具类。
      AliyunIdentityUtils.framework
      deviceiOS.framework
      
      # OSS上传组件。
      AliyunOSSiOS.framework
    • 系统库依赖:
      AudioToolbox.framework
      CoreMedia.framework
      AVFoundation.framework
      SystemConfiguration.framework
      UIKit.framework
      CoreTelephony.framework
      CoreMotion.framework
      Accelerate.framework
      libresolv.tbd
      libsqlite3.tbd
      libc++.tbd
      libz.tbd

拷贝资源文件

  1. 在Xcode中选择TARGETS
  2. 单击Build Phases页签。
  3. Copy Bundle Resources中添加以下bundle:
    说明 需要选中 Copy Items If Needed选项。
    • AliyunIdentityPlatform.bundle:位于AliyunIdentityPlatform.framework中。
    • AliyunIdentityFace.bundle:位于AliyunIdentityFace.framework中。
    • ToygerService.bundle:位于ToygerService.framework中。
    bundle增强版活体验证

调用SDK

  1. 引入头文件。命令如下:
    #import <AliyunIdentityPlatform/AliyunIdentityPlatform.h>
  2. 初始化SDK。命令如下:
    说明 在正式调用SDK其他任何接口之前,必须先进行SDK初始化。
    [[AliyunIdentityPlatform sharedInstance] install];
  3. 获取MetaInfo数据。命令如下:
    NSString *metaInfo = [[AliyunIdentityPlatform sharedInstance] getMetaInfo];

    返回值是NSDictionary类型,您需要在服务端将其转换为JSON字符串格式。

    调用服务端初始化认证接口(InitSmartVerify)时需要在入参MetaInfo中传入该值。

  4. 开始认证。
    • 认证接口:
      /**
       * 增强版活体检测。
       * @param certifyId:从服务端获取到的CertifyId。
       * @param viewController:用来展示SDK页面。
       * @param extParams:自定义扩展参数。
       * @param completeBlock:完成回调。
       */
      - (void)faceDetectWithCertifyId:(NSString *)certifyId
            withCurrentViewController:(UIViewController *)viewController
                        withExtParams:(NSDictionary *)extParams
                             complete:(AliyunIdentityVerifyBlock)completeBlock;
    • 调用参数说明:
      名称 类型 描述
      certifyId NSString 通过服务端初始化认证接口(InitSmartVerify)获取。
      currentViewController UIViewController 当前调用SDK的viewController,用于SDK内部UI展示。
      extParams NSDictionary 业务方对SDK内部相关UI的定制参数,可以为空。支持自定义的字段说明如下:
      • kIdentityParamKeyShowResult:@"YES", 
        // 定义是否展示OCR识别结果确认页,有效值为@"YES"或@"NO"。
      • kIdentityParamKeyWaterMark:@"仅供业务使用",
        // 定义识别结果页证件水印文案。
      • kIdentityParamKeyIdCardFaceOnly:@"NO", 
        // 是否只识别身份证人像面,有效值为@"YES"或@"NO"。
      • kIdentityParamKeyScanMaxTime:@"30",
        // OCR扫描证件的超时时间,单位是秒,默认30秒。
      • kIdentityParamKeyValidIdCardDate:@"YES", 
        // 是否校验身份证有效期。
      • kIdentityParamKeyNextButtonColor:@"#00FF00" ,
        // OCR识别结果确认页底部按钮的底色。
      • kIdentityParamKeyUIMode:@"RoundMode"
        // 选择刷脸UI样式,目前支持取值RectMode(方形刷脸框)/RoundMode(圆形刷脸框,默认值)。
      • kIdentityParamKeyRoundProgressColor:@"#0xFF6A00"
        // 圆脸模式下,进度条颜色,格式如#0xFF6A00阿里橙。
    • 返回结果说明:
      • AliyunIdentityVerifyRes.code:表示调用结果错误码,详见返回值说明
      • AliyunIdentityVerifyRes.message:表示调用结果错误码的详细原因。
    • 认证接口调用示例:
      NSMutableDictionary * extParams = @{}.mutableCopy;
      [[AliyunIdentityPlatform sharedInstance] faceDetectWithCertifyId:@"这里传服务端下发的CertifyId"
                                             withCurrentViewController:self
                                                         withExtParams:extParams
                                                              complete:^(AliyunIdentityVerifyRes *response) {
              NSString *resContent = [NSString stringWithFormat:@"Code=%d Message=%@", response.code, response.message];
              [weakSelf aliyunAlertWithTitle:@"认证结果" message:resContent confirmTitle:@"好的" handler:^{
              }];
          }];

返回值说明

Code 说明
1000 认证通过。
1001 认证失败。
1002 系统异常。
1003 SDK初始化失败。
1004 摄像头错误。
1005 网络错误。
1006 用户取消。
1007 CertifyId无效。
1009 客户端时间戳错误。

Demo代码包

增强版活体检测Demo(iOS)