關(guān)于iPhone手機(jī)的指紋解鎖和面容解鎖

首先大家要弄清一件事,那就是指紋解鎖和面容解鎖兩種方式是分開的,這點(diǎn)不用我們操心,因?yàn)樘O果爸爸已經(jīng)很好的給我們區(qū)分開了。
1.在iPhoneX 以下的設(shè)備都是指紋解鎖 Touch ID(5s以上設(shè)備)
2.在iPhoneX 以上的設(shè)備都是面容解鎖 Face ID (包含iPhoneX)
接下來,說點(diǎn)正事。就是不管事指紋還是面容對(duì)于我們來說都是一套代碼,一個(gè)框架。這是我比較感到欣慰的。

框架用的是 #import <LocalAuthentication/LocalAuthentication.h>
類用的是 LAContext
根據(jù) LAContext 的一些屬性和方法進(jìn)行設(shè)置和調(diào)用來完成我們項(xiàng)目的需求!
LAContext* context = [[LAContext alloc] init];
context.localizedFallbackTitle = @"自定義按鈕的文本";
context.localizedCancelTitle = @"取消按鈕的文本";
context.localizedReason = @"寫解鎖原因";
/*
LAPolicyDeviceOwnerAuthentication //系統(tǒng)密碼
LAPolicyDeviceOwnerAuthenticationWithBiometrics //自定義密碼
*/

核心代碼

//指紋解鎖調(diào)用方法
-(void)FingerprintIdentification2{
    
    // 初始化上下文對(duì)象
    LAContext* context = [[LAContext alloc] init];
    NSError* error = nil;
    NSString* result = @"需要您的支付進(jìn)行支付";
  //localizedReason:result  (解鎖原因)
    context.localizedFallbackTitle = @"快捷支付";
    context.localizedCancelTitle = @"取消";
    NSLog(@"data before authentication = %@",[context evaluatedPolicyDomainState]);
    
    // 首先使用canEvaluatePolicy 判斷設(shè)備支持狀態(tài)
    if ([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error]) {

        // 支持指紋驗(yàn)證
        [context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:result reply:^(BOOL success, NSError *error) {
            if (success) {
                //驗(yàn)證成功,主線程處理UI
                NSLog(@"驗(yàn)證成功...");
                NSLog(@"data after authentication = %@",[context evaluatedPolicyDomainState]);
            }else{
                NSLog(@"%@",error.localizedDescription);
                switch (error.code) {
                    case LAErrorSystemCancel:
                    {
                        NSLog(@"Authentication was cancelled by the system");
                        //切換到其他APP,系統(tǒng)取消驗(yàn)證Touch ID
                        break;
                    }
                    case LAErrorUserCancel:
                    {
                        NSLog(@"Authentication was cancelled by the user");
                        //用戶取消驗(yàn)證Touch ID
                        break;
                    }
                    case LAErrorUserFallback:
                    {
                        NSLog(@"User selected to enter custom password");
                        [[NSOperationQueue mainQueue] addOperationWithBlock:^{
                            //用戶選擇輸入密碼,切換主線程處理
                        }];
                        break;
                    }
                    case LAErrorAuthenticationFailed:
                    {
                        NSLog(@"Authentication Failed");
                        break;
                    }
                    case LAErrorTouchIDLockout:
                    {
                        NSLog(@"TOUCH ID is locked out");
                        break;
                    }
                    case LAErrorAppCancel:
                    {
                        NSLog(@"app cancle the authentication");
                        break;
                    }
                    case LAErrorInvalidContext:
                    {
                        NSLog(@"context is invalidated");
                        break;
                    }
                    default:
                    {
                        [[NSOperationQueue mainQueue] addOperationWithBlock:^{
                            //其他情況,切換主線程處理
                        }];
                        break;
                    }
                }
            }
        }];
    }else {
        NSLog(@"%@",error.localizedDescription);
        //不支持指紋識(shí)別,LOG出錯(cuò)誤詳情
        switch (error.code) {
            case LAErrorTouchIDNotEnrolled:
            {
                NSLog(@"TouchID is not enrolled");
                break;
            }
            case LAErrorPasscodeNotSet:
            {
                NSLog(@"A passcode has not been set");
                break;
            }
            default:
            {
                NSLog(@"TouchID not available");
                break;
            }
        }
    }
}

謝謝閱讀!有不正確的,請(qǐng)您指出,加以改正!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一直想玩玩指紋解鎖,近期時(shí)間比較閑,就研究了一下這個(gè)指紋解鎖。這個(gè)功能實(shí)現(xiàn)起來還是很簡(jiǎn)單的,雖然看起來比較高大上,...
    weicyNO_1閱讀 3,275評(píng)論 0 3
  • 前言:如果圖片看不了請(qǐng)移步:簡(jiǎn)書 Touch ID簡(jiǎn)介 Touch ID指紋識(shí)別作為iPhone 5s上的“殺手級(jí)...
    珍此良辰閱讀 3,062評(píng)論 3 6
  • 55 從前我以為人生最大的悲劇便是高考落榜,以致于當(dāng)高考前的幾個(gè)月,我成天的失眠,我不停的告訴自己:“快點(diǎn)睡,快點(diǎn)...
    藍(lán)蛹閱讀 246評(píng)論 0 0
  • 閱讀可以分為四個(gè)階段:第一階段是基礎(chǔ)閱讀,第二階段是系統(tǒng)略讀,第三階段是分析閱讀,第四階段是主題閱讀。
    曉祎琴閱讀 82評(píng)論 0 0
  • 大風(fēng)狂嘯,一夜入秋。北京的天氣總是這樣的忽然。占星所有基礎(chǔ)的獨(dú)立元素,都已經(jīng)寫過一遍了。下一步,要進(jìn)行的就是多角度...
    草渝田閱讀 462評(píng)論 0 2

友情鏈接更多精彩內(nèi)容