国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > iOS > 正文

iOS指紋登錄(TouchID)集成方案詳解

2020-07-26 02:28:57
字體:
來源:轉載
供稿:網友

TouchID指紋識別是iPhone 5S設備中增加的一項重大功能.蘋果的后續移動設備也相繼添加了指紋功能,在實際使用中還是相當方便的,比如快捷登錄,快捷支付等等.系統提供了相應框架,使用起來還是比較方便的.使用LAContext對象即可完成指紋識別,提高用戶體驗.

提示:指紋識別必須用真機測試,并且在iOS8以上系統.

TouchID API使用

1.添加頭文件

#import

2.判斷系統版本

 //首先判斷版本if (NSFoundationVersionNumber < NSFoundationVersionNumber_iOS_8_0) {  NSLog(@"系統版本不支持TouchID");  return;}

3.LAPolicy

在這里簡單介紹一下LAPolicy,它是一個枚舉.我們根據自己的需要選擇LAPolicy,它提供兩個值:

LAPolicyDeviceOwnerAuthenticationWithBiometrics和LAPolicyDeviceOwnerAuthentication.

<1>. LAPolicyDeviceOwnerAuthenticationWithBiometrics是支持iOS8以上系統,使用該設備的TouchID進行驗證,當輸入TouchID驗證5次失敗后,TouchID被鎖定,只能通過鎖屏后解鎖設備時輸入正確的解鎖密碼來解鎖TouchID。

<2>.LAPolicyDeviceOwnerAuthentication是支持iOS9以上系統,使用該設備的TouchID或設備密碼進行驗證,當輸入TouchID驗證5次失敗后,TouchID被鎖定,會觸發設備密碼頁面進行驗證。

4. canEvaluatePolicy

使用canEvaluatePolicy方法判斷設備是否支持TouchID,返回BOOL為YES,該設備支持TouchID。

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

error為返回驗證錯誤碼.具體不解釋了.

5. evaluatedPolicyDomainState

context.evaluatedPolicyDomainState用于判斷設備上的指紋是否被更改,在LAContext被創建的時候,evaluatedPolicyDomainState才生效,可在TouchID驗證成功時,將它記錄下來,用于下次使用TouchID時校驗,提高安全性。

6. evaluatePolicy

evaluatePolicy方法是對TouchID進行驗證,Block回調中如果success為YES則驗證成功,為NO驗證失敗,并對error進行解析.

- (IBAction)loginButtonClick:(UIButton *)sender {   //首先判斷版本 if (NSFoundationVersionNumber < NSFoundationVersionNumber_iOS_8_0) {  NSLog(@"系統版本不支持TouchID");  return; }     LAContext *context = [[LAContext alloc] init]; context.localizedFallbackTitle = @"輸入密碼"; if (@available(iOS 10.0, *)) {//  context.localizedCancelTitle = @"22222"; } else {  // Fallback on earlier versions } NSError *error = nil;  if ([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error]) {     [context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:@"通過Home鍵驗證已有手機指紋" reply:^(BOOL success, NSError * _Nullable error) {       if (success) {    dispatch_async(dispatch_get_main_queue(), ^{     NSLog(@"TouchID 驗證成功");    });   }else if(error){         switch (error.code) {     case LAErrorAuthenticationFailed:{      dispatch_async(dispatch_get_main_queue(), ^{       NSLog(@"TouchID 驗證失敗");      });      break;     }     case LAErrorUserCancel:{      dispatch_async(dispatch_get_main_queue(), ^{       NSLog(@"TouchID 被用戶手動取消");      });     }      break;     case LAErrorUserFallback:{      dispatch_async(dispatch_get_main_queue(), ^{       NSLog(@"用戶不使用TouchID,選擇手動輸入密碼");      });     }      break;     case LAErrorSystemCancel:{      dispatch_async(dispatch_get_main_queue(), ^{       NSLog(@"TouchID 被系統取消 (如遇到來電,鎖屏,按了Home鍵等)");      });     }      break;     case LAErrorPasscodeNotSet:{      dispatch_async(dispatch_get_main_queue(), ^{       NSLog(@"TouchID 無法啟動,因為用戶沒有設置密碼");      });     }      break;     case LAErrorTouchIDNotEnrolled:{      dispatch_async(dispatch_get_main_queue(), ^{       NSLog(@"TouchID 無法啟動,因為用戶沒有設置TouchID");      });     }      break;     case LAErrorTouchIDNotAvailable:{      dispatch_async(dispatch_get_main_queue(), ^{       NSLog(@"TouchID 無效");      });     }      break;     case LAErrorTouchIDLockout:{      dispatch_async(dispatch_get_main_queue(), ^{       NSLog(@"TouchID 被鎖定(連續多次驗證TouchID失敗,系統需要用戶手動輸入密碼)");      });     }      break;     case LAErrorAppCancel:{      dispatch_async(dispatch_get_main_queue(), ^{       NSLog(@"當前軟件被掛起并取消了授權 (如App進入了后臺等)");      });     }      break;     case LAErrorInvalidContext:{      dispatch_async(dispatch_get_main_queue(), ^{       NSLog(@"當前軟件被掛起并取消了授權 (LAContext對象無效)");      });     }      break;     default:      break;    }   }  }];    }else{  NSLog(@"當前設備不支持TouchID"); }}

上面這個代碼, 是整個TouchID的核心,也幾乎是所有代碼了.

驗證

驗證必須使用真機

結果

輸入錯誤的時候

總結:TouchID使用起來不難,重要的是使用流程邏輯.

以登錄為例,一般來說流程是這樣的:

  • 開啟指紋登錄:首次登陸使用密碼登錄,登錄后,可以設置一個開啟指紋ID登錄的按鈕,來進行指紋認證.
  • 驗證:檢測是否支持TouchID.
  • 生成設備賬號/密碼:TouchID驗證通過后,根據當前已登錄的賬號和硬件設備Token,生成設備賬號/密碼(規則可自定,密碼要長要復雜),并保存在keychain;
  • 綁定:生成設備賬號/密碼后,將原賬號及設備賬號/密碼,加密后(題主使用的是RSA加密)發送到服務端進行綁定;
  • 成功:驗證原賬號及設備賬號有效后,返回相應狀態,綁定成功則完成整個TouchID(設備)綁定流程。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 呼图壁县| 林周县| 河源市| 天柱县| 衡山县| 普兰县| 重庆市| 原阳县| 樟树市| 娄底市| 梧州市| 民乐县| 长武县| 中宁县| 本溪市| 彭山县| 牙克石市| 霍城县| 潞西市| 合山市| 济源市| 台州市| 莱阳市| 迁安市| 法库县| 临沂市| 崇阳县| 寿阳县| 那坡县| 庆城县| 视频| 建始县| 临沧市| 宜良县| 正宁县| 岚皋县| 庄浪县| 察哈| 双峰县| 博湖县| 永新县|