iOS 指紋識別

指紋識別:

iPhone5S開始,推出指紋識別

iOS8.0之后蘋果允許第三方 App 使用 Touch ID進行身份驗證

指紋識別Touch ID提供3+2 = 5次指紋識別機會----->3次識別失敗后,指紋驗證框消失(會報錯code = -1)然后點擊指紋會再次彈框可驗證兩次,如果五次指紋識別全部錯誤,就需要手動輸入數字密碼,數字密碼可以輸入6次,如果6次輸入密碼錯誤,系統停止驗證,等待驗證時間后會提供再次驗證的機會,正確及驗證成功(1次),錯誤則時間累加等待驗證,以此類推.

iOS10-----> 5次之后有問題: 需要進入設置中 -- TouchID與密碼, 輸入一次密碼, 就可以解開

思路:

1.導入#import<LocalAuthentication/LocalAuthentication.h>

2.判斷iOS8及以后版本

3.創建本地驗證上下文對象LAContext ? ? (LocalAuthentication)

4. 判斷能否使用指紋識別 :Evaluate: 評估? Policy: 策略 LAPolicyDeviceOwnerAuthenticationWithBiometrics: 設備擁有者授權 用 生物識別技術

5.成功調用<有的情況, 需要對錯誤的次數做累計, 此時就需要排除用戶取消>

主要代碼及注釋:

//1.判斷iOS8及以后的版本

if([UIDevice currentDevice].systemVersion.doubleValue >= 8.0){

//從iPhone5S開始,出現指紋識別技術,所以說在此處可以進一步判斷是否是5S以后機型

//2.創建本地驗證上下文對象-->這里導入框架LocalAuthentication

LAContext *context = [LAContext new];

// 3.判斷能否使用指紋識別

//Evaluate: 評估

//Policy: 策略

//LAPolicyDeviceOwnerAuthenticationWithBiometrics: 設備擁有者授權 用 生物識別技術

if([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:nil]){

//4.在可以使用的前提下就會調用

//localizedReason本地原因alert顯示

[context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:@"請允許設備指紋識別" reply:^(BOOL success, NSError * _Nullable error) {

if (success) {

//此處記得在主線程中更新UI

dispatch_sync(dispatch_get_main_queue(), ^{

UIAlertController *ac = [UIAlertController alertControllerWithTitle:@"? 提示? " message:@" 識別成功 " preferredStyle:UIAlertControllerStyleAlert];

UIAlertAction *confirm = [UIAlertAction actionWithTitle:@"確定" style:UIAlertActionStyleCancel handler:^(UIAlertAction *_Nonnull action){

}];

[ac addAction:confirm];

[self presentViewController:ac animated:true completion:^{

}];

ac = nil;

});

}

//不需要統計用戶取消

if(error.code != -2){

//? 指紋識別Touch ID提供3+2 = 5次指紋識別機會----->3次識別失敗后,指紋驗證框消失(會報錯code = -1)然后點擊指紋會再次彈框可驗證兩次,如果五次指紋識別全部錯誤,就需要手動輸入數字密碼,數字密碼可以輸入6次,如果6次輸入密碼錯誤,系統停止驗證,等待驗證時間后會提供再次驗證的機會,正確及驗證成功(1次),錯誤則時間累加等待驗證,以此類推. (iOS10不一樣, 5次之后有問題: 需要進入設置中 -- TouchID與密碼, 輸入一次密碼, 就可以解開)

//Code=-2 "Canceled by user

//Code=-1 "Application retry limit exceeded."

//Code=-8 "Biometry is locked out."

NSLog(@"error: %@", error);

}

}];

}else{

NSLog(@"請確保(5S以上機型),TouchID未打開");

}

}


最后<代碼思路,如有相同之處,不是故意為之>附上demo地址: ?demo


最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 簡述: 在類似支付寶為首的應用以及各種理財等涉及錢財對安全性要求較高的應用中,目前普遍對關鍵數據都做了安全訪問限制...
    C_HPY閱讀 3,035評論 0 18
  • 項目需要用到指紋識別,我把關鍵部分拿出來,代碼如下: 引入頭文件 指紋識別代碼 調用test方法,就可以看到app...
    Hardy_Hu閱讀 575評論 2 3
  • 簡介 蘋果從iPhone5S開始,具有指紋識別技術,從iOS8.0之后蘋果允許第三方 App 使用 Touch I...
    z4ywzrq閱讀 6,593評論 10 75
  • 蘋果從iPhone5S開始,具有指紋識別技術,從iOS8.0之后蘋果允許第三方 App 使用 Touch ID進行...
    ptlCoder閱讀 686評論 0 0
  • 《戲》 坐山觀虎斗,垂釣戲魚躍。 扔骨逗狗爭,拋蕉耍猴玩。
    自命飛皇Yoes閱讀 308評論 0 1