ID Verification 提供了移動端 iOS 平台的 SDK,可以協助您在行動裝置 App中實現 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 |