智能核身提供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

  4. 在Xcode调试设置中禁用Metal API Validation。

    设置路径:Edit Scheme > Run > Options,将Metal API Validation设置为Disabled

  5. 在Xcode编译设置中添加Non-modular支持。
    1. 选择PROJECT(注意不是TARGETS)。
    2. 选择Build Settings
    3. Apple Clang > Language > Modules下,将Allow Non-modular Includes In Framework Modules设置YES

配置依赖

  1. 下载增强版实人认证SDK(iOS)。SDK为ZIP包。
  2. 在Xcode设置Link Binary With Libraries,添加SDK中的framework和额外的系统库依赖。具体如下:
    • SDK中的包:
      #OCR识别
      AliyunIdentityOcr.framework
      xNN.framework
      XMedia.framework
      APMUtils.framework
      #活体检测
      AliyunIdentityFace.framework
      ToygerService.framework
      #卡证核身调度组件
      AliyunIdentityPlatform.framework
      #实用工具类
      AliyunIdentityUtils.framework
      deviceiOS.framework
      #OSS上传
      AliyunOSSiOS.framework
    • 系统库依赖:
      AudioToolbox.framework
      CoreMedia.framework
      AVFoundation.framework
      AdSupport.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中。
    • AliyunIdentityPlatformOCR.bundle:位于AliyunIdentityPlatformOcr.framework中。
    • AliyunIdentityFace.bundle:位于AliyunIdentityFace.framework中。
    • ToygerService.bundle:位于ToygerService.framework中。资源文件

调用SDK

  1. 引入头文件。代码如下:
    #import <AliyunIdentityPlatform/AliyunIdentityPlatform.h>
  2. 初始化SDK。代码如下:
    [[AliyunIdentityPlatform sharedInstance] install];
  3. 获取MetaInfo数据。代码如下:
    NSString *metaInfo = [[AliyunIdentityPlatform sharedInstance] getMetaInfo];

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

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

  4. 开始认证。
    调用SDK。代码如下:
    /**
     * 增强版实人认证。
     * @param certifyId - 从服务端获取到的CertifyId。
     * @param viewController - 用来展示SDK页面用的,会在这个Controller上present页面。
     * @param extParams - 自定义扩展参数。
     * @param completeBlock - 完成回调。
     */
    - (void)faceVerifyWithCertifyId:(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识别结果确认页底部按钮的底色。
    • kIdentityParamKeyOcrMode:@"PHOTO", 
      //PHOTO表示OCR为拍照模式,SCAN表示OCR为扫描模式,不指定该项默认为拍照模式。
    • kIdentityParamKeyOcrSelectPhoto:@"YES",
      //OCR过程中是否开启从相册选择图片功能,有效值为"YES"或"NO",默认为YES。
    返回结果说明:
    • AliyunIdentityVerifyRes.code:表示调用结果错误码,详见下表。
      Code 说明
      1000 认证通过。
      1001 认证失败。
      1002 系统异常。
      1003 SDK初始化失败。
      1004 摄像头错误。
      1005 网络错误。
      1006 用户取消。
      1007 CertifyId无效。
      1009 客户端时间戳错误。
    • AliyunIdentityVerifyRes.message:表示调用结果错误码的详细原因。
    认证接口调用示例:
    NSMutableDictionary * extParams = @{}.mutableCopy;
    [[AliyunIdentityPlatform sharedInstance] faceVerifyWithCertifyId:@"这里传服务端下发的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:^{
            }];
        }];

Demo代码包

增强版实人认证Demo(iOS)