人臉核身提供iOS客戶端SDK,幫助您在App中實現刷臉認證功能。您可通過核身認證移動端請求接口獲取實人認證唯一標識VerificationToken,并使用VerificationToken喚起人臉核身客戶端SDK。本文將結合示例代碼進行詳細的說明介紹。
阿里云視覺智能開放平臺各類目視覺AI能力API接入、接口使用或問題咨詢等,請通過釘釘群(23109592)加入阿里云視覺智能開放平臺咨詢群聯系我們。
前提條件
應用必須在iOS 9.0+真機平臺上運行。
您必須采用Objective C++集成人臉核身服務。
獲取SDK和Demo代碼
模擬器使用存在安全風險,暫不支持在模擬器上運行。
開發環境配置
在info.plist中配置攝像頭權限請求。
在Xcode的編譯設置中關閉Bitcode選項。
在Xcode編譯設置的Linking > Other Linker Flags中,添加設置-ObjC。
拷貝資源文件
選擇TARGETS,選擇Build Phases標簽頁,在Copy Bundle Resources中添加如下四個bundle:
APBToygerFacade.bundle:位于APBToygerFacade.framework中。
BioAuthEngine.bundle:位于BioAuthEngine.framework中。
OCRXMedia.bundle:所在位置為OCRDetectSDKForTech.framework中。
ToygerService.bundle:所在位置為ToygerService.framework中。
配置依賴
下載iOS SDK(SDK為framework包)后,在Xcode的Link Binary With Libraries添加SDK包和額外系統庫依賴。具體如下:
SDK中的包
APBToygerFacade APPSecuritySDK BioAuthEngine DTFIdentityManager DTFMobileRPC DTFUtility OCRDetectSDKForTech ToygerNative ToygerService ZolozFaceAuthFacade
系統庫依賴
CoreGraphics.framework Accelerate.framework SystemConfiguration.framework AssetsLibrary.framework CoreTelephony.framework QuartzCore.framework CoreFoundation.framework CoreLocation.framework ImageIO.framework CoreMedia.framework AVFoundation.framework WebKit.framework libresolv.tbd libz.tbd libc++.1.tbd libc++abi.tbd AudioToolbox.framework CFNetwork.framework MobileCoreServices.framework libz.1.2.8.tbd AdSupport.framework
調用SDK
引入頭文件。
#import <ZolozFaceAuthFacade/ZolozFaceAuthFacade.h>
初始化SDK。
初始化SDK的代碼為:
[ZolozFaceAuthFacade init];
增加初始化接口的目的在于提高身份核驗的用戶體驗,為刷臉認證準備一些必備數據。初始化接口是異步執行,不會影響主線程UI渲染,建議接入方將初始化接口放在appdelegate的如下函數中調用:
-(BOOL)application:(UIApplication)application didFinishLaunchingWithOptions:(NSDictionary)launchOptions
獲取metainfo數據。
[ZolozFaceAuthFacade getMetaInfo];
返回值為NSDictionary,接入方移動端需要將其轉換為JSON字符串,調用移動端的核身認證移動端請求接口時在請求參數MetaInfo中傳入該值。
開始認證。
調用SDK
[ZolozFaceAuthFacade verifyWith:self.verificationToken extParams:extParams onCompletion:^(ZIMResponse *response) {}];
參數說明
verificationToken:NSString類型,通過調用移動端的核身認證移動端請求接口獲取VerificationToken的對應值。
說明調用核身認證移動端請求接口返回的verificationToken有效期時間為30分鐘,從verificationToken生成時間開始算起,超過有效期再進行人臉認證會報錯,請在有效期時間內完成認證。
extParams:NSDictionary類型。必須傳入當前viewController,用于展現等待圖標和presentViewController。
[extParams setValue:self forKey:@"currentCtr"];
(非必須,默認不返回)返回視頻:在extParams里面添加returnVideo,設置值為true,視頻存儲的路徑:verifyWith接口返回的參數里,ZIMResponse類型參數的videoFilePath字段。
[extParams setValue:@"true" forKey:@"returnVideo"];
示例代碼
[ZolozFaceAuthFacade verifyWith:self.verificationToken extParams:extParams onCompletion:^(ZIMResponse *response) { dispatch_async(dispatch_get_main_queue(), ^{ NSString *title = @"刷臉成功"; switch (response.code) { case 1000: break; case 1001: title = @"系統錯誤"; break; case 1003: title = @"用戶退出"; break; case 2002: title = @"網絡錯誤"; break; case 2006: title = @"刷臉失敗"; break; case 2003: title = @"設備時間不準確"; break; default: break; } }); }];
返回結果espons.code有以下六種返回值,類型為整型。
HttpCode
錯誤碼
描述
1000
ZIMResponseSuccess
表示刷臉成功,該結果僅供參考,可通過移動端核身認證移動端查詢獲取最終認證結果。
1001
ZIMInternalError
表示系統錯誤。
1003
ZIMInterrupt
表示驗證中斷。
2002
ZIMNetworkfail
表示網絡錯誤。
2003
ZIMTIMEError
表示設備時間設置不對。
2006
ZIMResponseFail
表示刷臉失敗,如需獲取更詳細的失敗原因,可通過移動端核身認證移動端查詢獲取最終認證結果。
了解更多信息,請參見iOS客戶端錯誤碼詳情。
[ZolozFaceAuthFacade verifyWith:self.verificationToken extParams:extParams onCompletion:^(ZIMResponse *response) {}];
response.imageContent:返回采集到的人臉圖片數據,格式為NSData。如果用戶中途退出或者超時,則圖片數據為nil。客戶上傳圖片到移動端時,不能對NSData進行任何壓縮或者縮放,因為移動端會對圖片做MD5校驗,如果有壓縮或者縮放,會導致MD5值不一致。將NSData轉換成圖的示例如下:
UIImage* newImage = [UIImage imageWithData:response.imageContentData];
response.reason和response.retMessageSub:返回原因或者認證文案。
AppStore上架注意事項
AppStore上架時,請確保您的App已申請了如下權限,并在Info.plist中已添加相關說明,否則AppStore將上架失敗:
Camera權限,需在Info.plist中已添加NPrivacy - Camera Usage Description說明。
IDFA權限,需在Info.plist中已添加NSUserTrackingUsageDescription說明。說明文字可以結合您的業務情況進行描述,參考文案:“請放心,開啟權限不會獲取您在其他APP或網站的隱私信息,該權限僅用于標識設備并保障實名認證流程安全、提升服務使用體驗。”。