全部产品
Search
文档中心

ID Verification:iOS接入

更新时间:Dec 04, 2025

ID Verification 提供了移动端 iOS 平台的 SDK,可以帮助您在移动应用中实现 eKYC 远程身份验证功能。通过向服务端请求并获得唯一标识(transactionId)后,您可以传入该唯一标识并调起 SDK 的对应功能。本文将结合示例代码介绍 iOS 平台的接入流程。

使用限制

  • 仅支持 iOS 9 及以上系统版本的移动设备(iPhone 或 iPad)。

  • 必要的隐私权限:相机、网络。

SDK下载和配置

获取SDK

下载iOS SDK并解压,然后复制所有framework包到您的工程文件夹中。

添加必要权限

在 Info.plist 中添加以下权限(权限描述仅供参考):

image

Xcode添加framework

在工程的设置中定位到Build Settings > Build Phases > Link Binary With Libraries,添加framework。

  • 添加SDK中所有的framework:

    AliyunIdentityFace.xcframework
    AliyunIdentityPlatform.xcframework
    AliyunIdentityUtils.xcframework
    AliyunIdentityOcr.xcframework
    ToygerService.xcframework
    AliyunOSSiOS.xcframework
    faceguard.xcframework
    DTFUtility.xcframework
    ToygerNative.xcframework
    IDVMNN.xcframework
  • 添加系统依赖库:

    AudioToolbox.framework
    CoreMedia.framework
    CoreML.framework
    AVFoundation.framework
    SystemConfiguration.framework
    UIKit.framework
    CoreTelephony.framework
    CoreMotion.framework
    Accelerate.framework
    libresolv.tbd
    libsqlite3.tbd
    libc++.tbd
    libz.tbd

拷贝资源文件

在工程的设置中定位到Build Settings > Build Phases > Copy Bundle Resources,拷贝资源文件。

  • AliyunIdentityPlatform.bundle:资源存在于AliyunIdentityPlatform.xcframework/ios-arm64/AliyunIdentityPlatform.framework中。

  • AliyunIdentityFace.bundle:资源存在于AliyunIdentityFace.xcframework/ios-arm64/AliyunIdentityFace.framework中。

  • AliyunIdentityOCR.bundle:资源存在于AliyunIdentityOcr.xcframework/ios-arm64/AliyunIdentityOcr.framework中。

  • ToygerService.bundle:资源存在于ToygerService.xcframework/ios-arm64/ToygerService.framework中。

配置Linker flags

在工程的设置中定位到Build Settings > Other Linker Flags,添加-ObjC标志。

调用SDK

引入头文件

#import <AliyunIdentityPlatform/AliyunIdentityPlatform.h>

初始化SDK

- (void)install;
- (void)installWithOptions:(NSMutableDictionary *)options;

参数说明:

options:信息采集可选项,默认可以为null。可选参数如下:

重要
  • ID Verification客户端内置设备助手安全模块,为了满足不同地域数据收集合规要求,提供了不同的数据上报区域。您可以基于用户属性不同,设置CustomUrlCustomHost指定不同的上报站点。

  • 一次应用会话生命周期内只能指定一个地域上报,且服务端查询时地域需要和上报地域保持一致。各产品服务端支持的地域有所不同,详情请参考支持的地域

  • 各地域的CustomUrl

    • 中国香港https://cloudauth-device.cn-hongkong.aliyuncs.com

    • 新加坡https://cloudauth-device.ap-southeast-1.aliyuncs.com

    • 印度尼西亚(雅加达)https://cloudauth-device.ap-southeast-5.aliyuncs.com

    • 美国(硅谷)https://cloudauth-device.us-west-1.aliyuncs.com

    • 德国(法兰克福)https://cloudauth-device.eu-central-1.aliyuncs.com

字段名

说明

示例

IPv6

是否使用IPv6域名上报设备信息:

  • 0(默认):否(使用IPv4域名)

  • 1:是(使用IPv6域名)

"1"

DataSwitch

设备信息上报时机。

  • 0(默认):初始化时

  • 1:获取Token时

说明

建议采用默认配置。

"1"

CustomUrl

设置数据上报服务器域名。

"https://cloudauth-device.ap-southeast-1.aliyuncs.com"

CustomHost

设置数据上报服务器host。

"cloudauth-device.ap-southeast-1.aliyuncs.com

获取metaInfo数据

- (NSString *)getMetaInfo;

App服务器需要首先获得客户端的metaInfo后,才能向阿里云请求初始化接口。

因此,客户端需要首先获取本机的metaInfo数据,随后使用该metaInfo完成后续的初始化流程,才能获取TransactionId。

调用SDK开始认证

- (void)verifyWithCertifyId:(NSString *)certifyId
  withCurrentViewController:(UIViewController *)viewController
              withExtParams:(NSDictionary *)extParams
                   complete:(AliyunIdentityVerifyBlock)completeBlock;

参数说明

名称

类型

说明

transactionId

NSString

在服务器端的Initialize接口中获取。

viewController

UIViewController

客户端App当前的ViewController。

extParams

NSDictionary

用户自定义参数,如无特殊情况,一般直接传null即可。

当前支持的参数字段,请参见extParams配置说明

completeBlock

AliyunIdentityVerifyBlock

认证结束回调,包含认证结果。

extParams配置说明

Key

说明

示例(String类型)

kIdentityParamKeyNextButtonColor

OCR识别结果页面的底部按钮颜色。

#FF0000

kIdentityParamKeyRoundProgressColor

扫脸时的圆圈颜色。

#FF0000

kIdentityParamKeyOcrSelectPhoto

证件OCR识别环节,是否展示相册上传入口:

  • 1(默认):展示

  • 0:不展示

1

kIdentityParamKeyShowOcrResult

证件OCR识别环节,是否展示识别结果页:

  • 1(默认):展示

  • 0:不展示

1

kIdentutyParamKeyEditOcrResult

证件OCR识别环节,识别结果页是否可编辑:

  • 1(默认):可编辑

  • 0:不可编辑

1

kIdentityParamKeyMaxRetryCount

重试次数上限。可设置范围为3~10次,默认10次。

10

kIdentityParamKeyCardOcrTimeOutPeriod

OCR识别环节超时时长。可设置范围为20~60秒,默认20秒。

20

kIdentityParamKeyFaceVerifyTimeOutPeriod

活体采集检测环节超时时长。可设置范围为20~60秒,默认20秒。

20

kIdentityParamKeyCardOcrEditTimeOutPeriod

OCR识别结果页面可编辑时长。 可自定义配置,范围为60秒到180秒之间,默认不限。

180

kIdentityParamKeyLanguage

SDK语言自定义设置。默认跟随移动设备系统的设置。

说明

SDK具体支持的语言列表,请参见Android和iOS SDK 自定义语种

zh-Hans

kIdentityParamKeyDefaultLanguage

SDK默认语言设置,可参考kIdentityParamKeyLanguage字段取值

默认为en:英文。

en

kIdentityParamKeyCloseButtonPosition

SDK关闭按钮位置:

  • left(默认):左侧

  • right:右侧

left

kIdentityParamKeyWatermark

OCR识别成功后水印文字。

测试水印文字

kIdentutyParamKeyProtocol

SDK Protocol。

说明

通过服务端Initialize接口获取protocol,传入扩展参数中,可减少SDK内部接口交互,提升网络体验。

968412EB*******...

错误码

错误码

是否计费

结果码描述

1000

用户完成了刷脸过程,认证建议结果为通过。该结果仅供参考,可通过调用服务端CheckResult接口获取最终认证结果,进行下一步处理。

1001

用户完成了刷脸过程,认证建议结果为未通过。该结果仅供参考,可通过调用服务端CheckResult接口获取最终认证结果、未通过的详细原因,进行下一步处理。

1002

表示系统错误。

1003

表示SDK初始化失败。

1004

表示摄像头错误。请参考以下步骤尝试解决:

  1. 在认证前请先确保App已获取到相机权限。

  2. 如已授权仍提示无权限,请尝试清除App缓存后重试。

1005

表示网络错误。

1006

表示用户退出。

1007

表示TransactionId无效。

1009

表示客户端时间戳错误。

1011

表示提交证件类型错误。

1012

表示识别出的证件关键信息缺失或格式校验失败。

1013

表示图片质量不佳。

1014

表示错误次数超出上限。

示例代码

#import "ViewController.h"
#import <AliyunIdentityPlatform/AliyunIdentityPlatform.h>

@interface ViewController ()
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
 
    // Initialize the sdk
    [[AliyunIdentityPlatform sharedInstance] install];
 
    [self initUI];
}

// This function needs to be implemented by the user
- (NSString *)sentMetaInfoAndGetTransactionId:(NSString*) metaInfo {
    return @"Get TransactionId from your server."; // replace it.
}

- (void)onClickStart:(id) sender {
    NSString *metaInfo = [[AliyunIdentityPlatform sharedInstance] getMetaInfo];
    NSString *transactionId = [self sentMetaInfoAndGetTransactionId:metaInfo];

    // Set the sdk language
    NSDictionary *extParams = @{
        kIdentityParamKeyLanguage:@"en"
        kIdentutyParamKeyProtocol:@"968412EB......................."//配置该协议可优化网络耗时
    };
    // start Verify
    [[AliyunIdentityPlatform sharedInstance] verifyWithCertifyId:transactionId
                                       withCurrentViewController:self
                                                   withExtParams:extParams
                                                        complete:^(AliyunIdentityVerifyRes *response) {
        NSString *resContent = [NSString stringWithFormat:@"Code=%d Message=%@", response.code, response.message];
    }];
}

- (void)initUI {
    // ......
}

@end

Demo代码包

您可以下载iOS Demo代码包进行体验。

组件裁剪

是否可裁剪

模块

模块说明

包体增量

可裁剪

AliyunIdentityNFC

裁剪后NFC功能不可用

3.7M

可裁剪

OpenSSL

裁剪后NFC功能不可用

可裁剪

AliyunIdentityOcr

裁剪后OCR功能、eKYC认证功能不可用

0.8M

可裁剪

faceguard

该模块保护刷脸过程中端侧认证环境安全,裁剪后会削弱安全对抗效果

0.74M

可裁剪

AliyunIdentityFace

裁剪后人脸活体功能不可使用

2.2M

可裁剪

ToygerService

裁剪后人脸活体功能不可使用

0.98M

可裁剪

ToygerNative

裁剪后人脸活体功能不可使用

不可裁剪

AliyunIdentityPlatform

不可裁剪

0.04M

不可裁剪

AliyunIdentityUtils

不可裁剪

0.04M

可裁剪

MNN

裁剪该模块后,远近活体、人脸质量、OCR自动扫描功能不可用

0.09M

不可裁剪

DTFUtility

不可裁剪

0.1M

不可裁剪

AliyunOSSiOS

不可裁剪

0.23M