麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 系統(tǒng) > iOS > 正文

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

2019-10-21 18:41:21
字體:
供稿:網(wǎng)友

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

iOS,指紋登錄,TouchID

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

TouchID API使用

1.添加頭文件

#import

2.判斷系統(tǒng)版本

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

3.LAPolicy

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

LAPolicyDeviceOwnerAuthenticationWithBiometrics和LAPolicyDeviceOwnerAuthentication.

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

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

4. canEvaluatePolicy

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

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

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

5. evaluatedPolicyDomainState

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

6. evaluatePolicy

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

- (IBAction)loginButtonClick:(UIButton *)sender {   //首先判斷版本 if (NSFoundationVersionNumber < NSFoundationVersionNumber_iOS_8_0) {  NSLog(@"系統(tǒng)版本不支持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 被系統(tǒng)取消 (如遇到來電,鎖屏,按了Home鍵等)");      });     }      break;     case LAErrorPasscodeNotSet:{      dispatch_async(dispatch_get_main_queue(), ^{       NSLog(@"TouchID 無法啟動,因為用戶沒有設(shè)置密碼");      });     }      break;     case LAErrorTouchIDNotEnrolled:{      dispatch_async(dispatch_get_main_queue(), ^{       NSLog(@"TouchID 無法啟動,因為用戶沒有設(shè)置TouchID");      });     }      break;     case LAErrorTouchIDNotAvailable:{      dispatch_async(dispatch_get_main_queue(), ^{       NSLog(@"TouchID 無效");      });     }      break;     case LAErrorTouchIDLockout:{      dispatch_async(dispatch_get_main_queue(), ^{       NSLog(@"TouchID 被鎖定(連續(xù)多次驗證TouchID失敗,系統(tǒng)需要用戶手動輸入密碼)");      });     }      break;     case LAErrorAppCancel:{      dispatch_async(dispatch_get_main_queue(), ^{       NSLog(@"當前軟件被掛起并取消了授權(quán) (如App進入了后臺等)");      });     }      break;     case LAErrorInvalidContext:{      dispatch_async(dispatch_get_main_queue(), ^{       NSLog(@"當前軟件被掛起并取消了授權(quán) (LAContext對象無效)");      });     }      break;     default:      break;    }   }  }];    }else{  NSLog(@"當前設(shè)備不支持TouchID"); }}

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

驗證

驗證必須使用真機

iOS,指紋登錄,TouchID

結(jié)果

iOS,指紋登錄,TouchID

輸入錯誤的時候

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

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

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

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網(wǎng)。


注:相關(guān)教程知識閱讀請移步到IOS開發(fā)頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 欧美亚洲一级 | 一区二区国产在线 | 奇米888一区二区三区 | 国产精品免费视频观看 | 久久精品中文字幕一区二区 | 九九热在线免费观看视频 | 久草在线观看首页 | 最新午夜综合福利视频 | 激情亚洲一区二区三区 | 精品一区二区三区中文字幕老牛 | 最新一区二区三区 | 国产成人aⅴ | 综合97| 91九色免费视频 | 国产亚洲欧美在线视频 | 国产69精品久久久久99尤 | 欧美成人一级 | 99精品无人区乱码在线观看 | 国产羞羞网站 | 黄视频网站免费在线观看 | 日韩一级免费 | 欧美四级在线观看 | 国产一级毛片视频在线! | 成人激情综合网 | 国产午夜精品理论片a级探花 | 一级黄色影院 | 污视频在线免费播放 | 国产高清美女一级毛片久久 | 玩偶姐姐 在线观看 | 日韩中文字幕三区 | 中国成人在线视频 | 亚洲第一综合 | 激情综合在线 | 日本在线视频免费观看 | 久久精品毛片 | 成人福利视频在 | 二区三区四区 | 91精品国产综合久久久欧美 | 久久精品亚洲一区二区三区观看模式 | 西川av在线一区二区三区 | 成人 精品 |