TouchID指紋識別是iPhone 5S設備中增加的一項重大功能.蘋果的后續(xù)移動設備也相繼添加了指紋功能,在實際使用中還是相當方便的,比如快捷登錄,快捷支付等等.系統(tǒng)提供了相應框架,使用起來還是比較方便的.使用LAContext對象即可完成指紋識別,提高用戶體驗.
成都創(chuàng)新互聯(lián)公司主營代縣網站建設的網絡公司,主營網站建設方案,APP應用開發(fā),代縣h5成都微信小程序搭建,代縣網站營銷推廣歡迎代縣等地區(qū)企業(yè)咨詢

提示:指紋識別必須用真機測試,并且在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),使用該設備的TouchID進行驗證,當輸入TouchID驗證5次失敗后,TouchID被鎖定,只能通過鎖屏后解鎖設備時輸入正確的解鎖密碼來解鎖TouchID。
<2>.LAPolicyDeviceOwnerAuthentication是支持iOS9以上系統(tǒng),使用該設備的TouchID或設備密碼進行驗證,當輸入TouchID驗證5次失敗后,TouchID被鎖定,會觸發(fā)設備密碼頁面進行驗證。
4. canEvaluatePolicy
使用canEvaluatePolicy方法判斷設備是否支持TouchID,返回BOOL為YES,該設備支持TouchID。
if ([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error]) {error為返回驗證錯誤碼.具體不解釋了.
5. evaluatedPolicyDomainState
context.evaluatedPolicyDomainState用于判斷設備上的指紋是否被更改,在LAContext被創(chuàng)建的時候,evaluatedPolicyDomainState才生效,可在TouchID驗證成功時,將它記錄下來,用于下次使用TouchID時校驗,提高安全性。
6. evaluatePolicy
evaluatePolicy方法是對TouchID進行驗證,Block回調中如果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 無法啟動,因為用戶沒有設置密碼");
});
}
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 被鎖定(連續(xù)多次驗證TouchID失敗,系統(tǒng)需要用戶手動輸入密碼)");
});
}
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使用起來不難,重要的是使用流程邏輯.
以登錄為例,一般來說流程是這樣的:
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。
文章題目:iOS指紋登錄(TouchID)集成方案詳解
路徑分享:http://www.chinadenli.net/article36/gjodpg.html
成都網站建設公司_創(chuàng)新互聯(lián),為您提供響應式網站、域名注冊、網站導航、建站公司、App開發(fā)、小程序開發(fā)
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)