下载无线认证SDK后,您可参考以下步骤将认证SDK集成到您的iOS应用中。

背景信息

单击查看老版本接入文档说明。

说明 iOS SDK与BundleID绑定,不同BundleID需要在管理控制台上重新下载SDK。

在工程中导入 SDK

说明 对于已经接入过实人认证无线SDK的接入方(iOS SDK版本号<=2.1,可在RPSDK.framework文件夹下info.plist文件中查看CFRPSDKVersion),在控制台下载到新版本的无线SDK后(iOS SDK版本号>=2.2),需要将新下载SDK包中的所有的文件替换原来工程里的对应文件,否则会报错。
  1. 解压无线认证SDK后,将以下iOS的依赖包引入到您的应用工程中:
    • RPSDK.framework
    • SecurityGuardSDK.framework
    • SGMain.framework
    • SGSecurityBody.framework
    • AliyunOSSiOS.framework
    • WindVane.framework
    • WindVaneBasic.framework
    • WindVaneBridge.framework
    • WindVaneCore.framework
    • ZipArchive.framework
    • AliReachability.framework
  2. 确认您的工程中已引入以下实人认证服务需要的系统依赖:
    • CoreMedia.framework
    • CoreMotion.framework
    • CoreTelephony.framework
    • AVFoundation.framework
    • ImageIO.framework
    • MobileCoreServices.framework
    • MediaPlayer.framework
    • CoreLocation.framework
    • AddressBook.framework
    • AddressBookUI.framework
    • SystemConfiguration.framework
    • AudioToolbox.framework
    • AssetsLibrary.framework
    • Libresolv.tbd
    • WebKit.framework
    • Libiconv.tbd
    • Libc++.tbd
    • Libz.tbd
  3. 在您的工程资源中(Copy Bundle Resources),引入无线认证SDK包中的 yw_1222_*.jpg签名图片文件,以及RPSDK.bundle文件。
  4. 编译选项:在工程的Other Linker Flags选项中添加-ObjC。

使用SDK

  1. 初始化。
    一般在应用启动时进行。
    #if TARGET_OS_IPHONE // 实人认证只支持真机,不支持模拟器调试
    #import <RPSDK/RPSDK.h>
    #endif
    
    #if TARGET_OS_IPHONE
    [RPSDK initialize:RPSDKEnvOnline] //必须为RPSDKEnvOnline
    #endif
  2. 进入认证。

    调用开始实人认证的接口,需要您提前获取verifyTokenverifyToken由您的服务端调用发起认证请求接口DescribeVerifyToken获取),将之传入接口:

    [RPSDK start:verifyToken rpCompleted:^(RPVerifyState verifyState, NSString *code) {
         NSLog(@"verifyResult = %ld",(unsigned long)verifyState);
         if(verifyState == RPVerifyStatePass) { //认证通过。建议接入方调用实人认证服务端接口DescribeVerifyResult来获取最终的认证状态,并以此为准进行业务上的判断和处理
         }
         else if(verifyState == RPVerifyStateFail) { //认证不通过。建议接入方调用实人认证服务端接口DescribeVerifyResult来获取最终的认证状态,并以此为准进行业务上的判断和处理
         }
         else if(verifyState == RPVerifyStateNotVerify) { //未认证,具体原因可通过code来区分(code取值参见下方表格),通常是用户主动退出或者姓名身份证号实名校验不匹配等原因,导致未完成认证流程。
         }
    
     }withVC:self.navigationController];

    RPSDK.start 接口支持除 RPH5BioOnly、RPMin 外的所有认证方案,该接口会以加载 H5 的方式显示页面,如果您选择的认证方案只包含活体检测步骤(请参见认证方案,并对调起实人认证的速度有较高的要求,可以考虑使用RPSDK.startVerifyByNative接口:

    [RPSDK startVerifyByNative:verifyToken rpCompleted:^(RPVerifyState verifyState, NSString *code) {
         NSLog(@"verifyResult = %ld",(unsigned long)verifyState);
         if(verifyState == RPVerifyStatePass) { //认证通过。建议接入方调用实人认证服务端接口DescribeVerifyResult来获取最终的认证状态,并以此为准进行业务上的判断和处理
         }
         else if(verifyState == RPVerifyStateFail) { //认证不通过。建议接入方调用实人认证服务端接口DescribeVerifyResult来获取最终的认证状态,并以此为准进行业务上的判断和处理
         }
         else if(verifyState == RPVerifyStateNotVerify) { //未认证,具体原因可通过code来区分(code取值参见下方表格),通常是用户主动退出或者姓名身份证号实名校验不匹配等原因,导致未完成认证流程。
         }
     }withVC:self.navigationController];
    说明 RPSDK.startVerifyByNative接口支持除RPH5BioOnly之外的仅活体检测认证方案(如 RPBioOnly、FDBioOnly、FVBioOnly),包含身份证件拍摄等其他步骤的认证方案需要使用RPSDK.start 接口。另,使用RPSDK.startVerifyByNative接口时,对应的认证方案不支持在控制台配置引导页、授权页、结果页等,需接入方自行处理。如果需要在控制台配置使用引导页、授权页、结果页等,则只能使用RPSDK.start接口。

    在开始实人认证的接口中,verifyToken参数由接入方的服务端调用实人认证服务的DescribeVerifyToken接口获得。

    rpCompleted: 代码块中可获取到认证状态和认证失败时错误码,参见下表说明。

    verifyState code code释义
    RPVerifyStatePass 1 认证通过。
    RPVerifyStateFail 取值2~12 表示认证不通过,具体的不通过原因可以查看服务端的查询认证结果(DescribeVerifyResult)接口文档中认证状态的表格说明。
    RPVerifyStateNotVerify -1 未完成认证,原因是:用户在认证过程中,主动退出。
    RPVerifyStateNotVerify 3001 未完成认证,原因是:认证token无效或已过期。
    RPVerifyStateNotVerify 3101 未完成认证,原因是:用户姓名身份证实名校验不匹配。
    RPVerifyStateNotVerify 3102 未完成认证,原因是:实名校验身份证号不存在。
    RPVerifyStateNotVerify 3103 未完成认证,原因是:实名校验身份证号不合法。
    RPVerifyStateNotVerify 3104 未完成认证,原因是:认证已通过,重复提交。
    RPVerifyStateNotVerify 3204 未完成认证,原因是:非本人操作。
    RPVerifyStateNotVerify 3206 未完成认证,原因是:非本人操作。
    RPVerifyStateNotVerify 3208 未完成认证,原因是:公安网无底照。

常见问题

请参见iOS集成常见问题