第一步
導(dǎo)入對應(yīng)的頭文件
#import <LocalAuthentication/LocalAuthentication.h>
第二步
創(chuàng)建LAContext對象
LAContext *context = [LAContext new];
context.localizedFallbckTitle = @"右側(cè)按鈕標(biāo)題";
localizedFallbckTitle 設(shè)置指紋解鎖失敗時,提示框的右側(cè)按鈕提示語
第三步
判斷是否支持指紋解鎖
- (BOOL)canEvaluatePolicy:(LAPolicy)policy error:(NSError * __autoreleasing *)error __attribute__((swift_error(none)));
支持指紋解鎖,調(diào)用下述方法
- (void)evaluatePolicy:(LAPolicy)policy
localizedReason:(NSString *)localizedReason
reply:(void(^)(BOOL success, NSError * __nullable error))reply;
localizedReason 設(shè)置提示語,TouchID用于什么目的
如果支持指紋解鎖,在上述reply代碼塊內(nèi)對指紋解鎖時出現(xiàn)的各種情況進行下一步處理。
示例代碼如下:
- (void)TouchIDAction{
// 第二步,創(chuàng)建LAContext對象
LAContext *context = [LAContext new];
context.localizedFallbackTitle = @"右側(cè)按鈕標(biāo)題"; // 解鎖失敗時,右側(cè)按鈕標(biāo)題
NSError *error = nil;
// 第三步,判斷是否支持指紋
if ([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error]) {
NSLog(@"支持指紋解鎖");
[context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:@"通過Home鍵驗證已有手機指紋" reply:^(BOOL success, NSError * _Nullable error) {
if (success) {
NSLog(@"指紋驗證成功,返回主界面");
}else{
NSLog(@"%@",error.localizedDescription);
switch (error.code) {
case LAErrorSystemCancel:
NSLog(@"系統(tǒng)取消授權(quán)");
break;
case LAErrorUserCancel:
NSLog(@"用戶取消指紋驗證");
break;
case LAErrorAuthenticationFailed:
NSLog(@"提供驗證的指紋,不存在");
break;
case LAErrorPasscodeNotSet:
NSLog(@"未設(shè)置指紋密碼");
break;
case LAErrorTouchIDNotEnrolled:
NSLog(@"不能驗證,指紋未被錄入");
break;
case kLAErrorTouchIDLockout:
NSLog(@"超過5次輸入錯誤,屏幕將鎖住");
break;
case LAErrorTouchIDNotAvailable:
NSLog(@"不能獲取到指紋");
break;
case LAErrorUserFallback:
NSLog(@"用戶選擇不使用TouchID解鎖,即解鎖失敗后,點擊右側(cè)按鈕");
[[NSOperationQueue mainQueue] addOperationWithBlock:^{
NSLog(@"用戶選擇使用密碼登錄");
}];
break;
default:
[[NSOperationQueue mainQueue] addOperationWithBlock:^{
NSLog(@"未知情況,返回主線程進行處理");
}];
break;
}
}
}];
}else{
NSLog(@"不支持指紋解鎖");
NSLog(@"%@",error.localizedDescription);
}
}