ID Verification 提供了移动端 iOS 平台的 SDK,可以帮助您在移动应用中实现 eKYC 远程身份验证功能。通过向服务端请求并获得唯一标识(transactionId)后,您可以传入该唯一标识并调起 SDK 的对应功能。本文将结合示例代码介绍 iOS 平台的接入流程。
使用限制
仅支持 iOS 9 及以上系统版本的移动设备(iPhone 或 iPad)。
必要的隐私权限:相机、网络。
SDK下载和配置
获取SDK
下载iOS SDK并解压,然后复制所有framework包到您的工程文件夹中。
添加必要权限
在 Info.plist 中添加以下权限(权限描述仅供参考):

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客户端内置设备助手安全模块,为了满足不同地域数据收集合规要求,提供了不同的数据上报区域。您可以基于用户属性不同,设置
CustomUrl和CustomHost指定不同的上报站点。一次应用会话生命周期内只能指定一个地域上报,且服务端查询时地域需要和上报地域保持一致。各产品服务端支持的地域有所不同,详情请参考支持的地域。
各地域的
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域名上报设备信息:
| "1" |
DataSwitch | 设备信息上报时机。
说明 建议采用默认配置。 | "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 |
kIdentityParamKeyShowOcrResult | 证件OCR识别环节,是否展示识别结果页:
| 1 |
kIdentutyParamKeyEditOcrResult | 证件OCR识别环节,识别结果页是否可编辑:
| 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 |
kIdentityParamKeyWatermark | OCR识别成功后水印文字。 | 测试水印文字 |
kIdentutyParamKeyProtocol | SDK Protocol。 说明 通过服务端Initialize接口获取protocol,传入扩展参数中,可减少SDK内部接口交互,提升网络体验。 | 968412EB*******... |
错误码
错误码 | 是否计费 | 结果码描述 |
1000 | 是 | 用户完成了刷脸过程,认证建议结果为通过。该结果仅供参考,可通过调用服务端CheckResult接口获取最终认证结果,进行下一步处理。 |
1001 | 是 | 用户完成了刷脸过程,认证建议结果为未通过。该结果仅供参考,可通过调用服务端CheckResult接口获取最终认证结果、未通过的详细原因,进行下一步处理。 |
1002 | 否 | 表示系统错误。 |
1003 | 否 | 表示SDK初始化失败。 |
1004 | 否 | 表示摄像头错误。请参考以下步骤尝试解决:
|
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 {
// ......
}
@endDemo代码包
您可以下载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 |