應(yīng)用TouchID解鎖

第一步

導(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);
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容