文档

iOS接入

更新时间:

金融级NFC认证提供iOS客户端SDK,帮助您在业务应用(App)中实现NFC认证功能。本文将结合示例代码进行iOS客户端接入的详细说明。​

前提条件

  • 认证应用必须运行在iOS 13.0及以上版本的系统上。

  • 您的业务应用必须采用Objective C++或Swift集成金融级NFC认证服务。

说明

iOS接入不支持模拟器模式调试。

配置开发环境

  1. 在Xcode的编译设置中,关闭Enable Bitcode选项。

    image.png

  2. 在Xcode编译设置中,选择Linking > Other Linker Flags,添加-ObjC

    image.png

  3. 应用权限配置。

    1. 登录苹果开发者管理平台,确认当前bundle ID下的NFC Tag Reading已经选中。

    2. 在项目工程的info.plist文件中添加Privacy - NFC Scan Usage DescriptionISO7816 application identifiers for NFC Tag Reader Session,在item0中填写 F049442E43484E(身份证)和item1中填A0000002471001(旅行证件)。

      image.png

    3. 在Xcode中,选择TARGETS > Signing&Capabilities > All,添加Near Field Communication Tag Reading

      image.png

配置依赖

  1. 下载iOS SDK。该SDK为framework包。

  2. 解压下载的SDK包,并在解压的文件夹中执行以下命令提取所有的framework到Products目录。

    for i in $(ls *.tgz);do tar xvf $i;done

    解压后iOS SDK中的包如下所示:

    AliyunFaceAuthFacade.framework
    DTFUtility.framework
    DTFNFCIdentityManager.framework
  3. Build Phases > Link Binary With Libraries中,添加SDK解压后的包和以下系统库依赖。

    libc++.tbd
    CoreNFC.framework

拷贝资源文件

在Xcode中,选择TARGETS,单击Build Phases页签,在Copy Bundle Resources中添加DTFNFCIdentityManager.bundle

该Bundle位于DTFNFCIdentityManager.framework中。

image.png

调用SDK

  1. 引入头文件。

    命令如下:

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

    为了提升用户体验并为NFC认证准备一些必备的数据,iOS客户端需要初始化SDK。您可以在调用appDelegate函数时放置初始化SDK代码;您也可以在获取metaInfo数据前放置初始化SDK代码。

    appDelegate函数调用,示例代码:

    - (BOOL)application:(UIApplication)application didFinishLaunchingWithOptions:(NSDictionary)launchOptions {
        [AliyunFaceAuthFacade initSDK];// 初始化SDK。
    }

    IPv6网络初始化,示例代码如下:

    [AliyunFaceAuthFacade init];// 初始化SDK,如果已经在appDelegate函数中调用过,此处无需再重复调用。
    [AliyunFaceAuthFacade getNFCMetaInfo];
  3. 获取metaInfo数据。示例代码如下:

    [AliyunFaceAuthFacade initSDK];// 初始化SDK,如果已经在appDelegate函数中调用过,此处无需再重复调用。
    [AliyunFaceAuthFacade getNFCMetaInfo]; // 获取NFCMetainfo
    说明

    返回值类型是NSDictionary,您的服务端需要将其转换为JSON字符串。调用服务端发起认证请求接口时,在入参metaInfo中传入该值。关于发起认证请求的具体操作,请参见initFaceVerify

  4. 调用SDK开始认证。

    • 示例代码如下:

      // NFC接口
      [AliyunFaceAuthFacade nfcVerifyWith:certifyId extParams:extParams onCompletion:^(ZIMResponse *response) {}];

      名称

      类型

      描述

      certifyId

      NSString

      您可以通过服务端发起申请请求接口获取该参数。关于发起认证请求的具体操作,请参见initFaceVerify

      extParams

      NSDictionary

      通过以下代码传入当前viewController,用于展现网络加载和presentViewController

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

    • 返回结果说明:

      response.code包含以下返回参数,具体说明如下表所示。

      错误码

      错误码文案

      错误码描述

      1000(ZIMResponseSuccess)

      验证成功

      表示验证成功。

      说明

      该结果仅供参考。可通过调用服务端DescribeFaceVerify接口获取最终认证结果。

      1001(ZIMInternalError)

      系统错误

      表示系统错误。

      1003(ZIMInterrupt)

      验证中断

      表示验证中断。

      2002(ZIMNetworkfail)

      网络错误

      表示网络错误。

      2003(ZIMTIMEError)

      客户端设备时间错误

      表示客户端设备时间错误。

      2006(ZIMResponseFail)

      验证失败

      表示验证失败。

      说明

      如需获取认证不通过的详情,需通过调用服务端DescribeFaceVerify接口。

      说明

      关于错误码的更多信息,请参见金融级NFC认证iOS客户端错误码

    • 代码示例:

      [AliyunFaceAuthFacade nfcVerifyWith: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;
                   }
               });
          }];

Demo代码包

您可以下载以下iOS Demo代码包进行体验。在使用过程中,请替换iOS Demo代码包中的文件的版本为最新的版本:

升级注意事项

如果您在使用金融级NFC认证之前接入过金融级实人认证方案,您只需要将金融级实人认证方案升级到最新版本。升级后,AliyunFaceAuthFacade.framework和DTFUtility.framework使用金融级实人认证方案中的即可。

  • 本页导读
文档反馈