你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發基礎 >> iOS 指紋識別

iOS 指紋識別

編輯:IOS開發基礎

指紋識別:

iPhone5S開始,推出指紋識別

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

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

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

思路:

1.導入#import

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


著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved