全部产品
Search
文档中心

ID Verification:iOS接入

更新时间:Feb 11, 2026

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,添加xcframework。

  • 添加SDK中所有的xcframework:

    AliyunIdentityFace.xcframework
    AliyunIdentityPlatform.xcframework
    AliyunIdentityUtils.xcframework
    AliyunIdentityOcr.xcframework
    AliyunOSSiOS.xcframework
    faceguard.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中。

配置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

    • 马来西亚(吉隆坡)https://cloudauth-device.ap-southeast-3.aliyuncs.com

字段名

说明

示例

IPv6

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

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

  • 1:是(使用IPv6域名)

"1"

DataSwitch

设备信息上报时机。

  • 0(默认):初始化时

  • 1:获取Token时

说明

建议采用默认配置。

"1"

CustomUrl

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

具体内容,请参见各地域的CustomUrl

CustomHost

设置数据上报服务器host。

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

说明

此处为新加坡地域示例,其他地域的host,请参见各地域的CustomUrl

获取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*******...

错误码

错误码

是否计费

subCode

结果码描述

1000

A1000_1

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

1001

A1001_1

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

1002

A1002_1

模型加载失败。

A1002_3

模块加载异常。

A1002_4

iOS系统低于9.0。

A1002_5

网络接口异常。

1003

A1003_1

初始化接口,内容为空。

A1003_2

初始化接口,内容格式错误。

A1003_3

客户端初始化协议解析失败。

A1003_4

初始化接口,内容解密失败。

A1003_5

初始化接口失败。

A1003_6

初始化接口OSS为空。

A1003_7

context为空。

1004

A1004_1

设备前置摄像头异常。

A1004_2

打开摄像头异常。

A1004_3

相机权限拒绝。

1005

A1005_1

初始化接口网络异常。

A1005_2

认证接口网络异常。

1006

A1006_1

用户退出。

A1006_2

用户15分钟放置超时退出。

1007

A1007_1

无效的认证id。

1014

A1014_1

表示错误次数超出上限。

1017

A1017_1

产品productCode异常。

示例代码

#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

不可裁剪

AliyunIdentityPlatform

不可裁剪

0.04M

不可裁剪

AliyunIdentityUtils

不可裁剪

0.04M

可裁剪

MNN

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

0.09M

不可裁剪

AliyunOSSiOS

不可裁剪

0.23M