天天看點

指紋識别和人臉識别

一、指紋識别

1、指紋識别介紹

iPhone 5S 開始有了指紋識别功能

ios8.0開始,蘋果開放了指紋識别的驗證接口:LocalAuthentication

2、調用機制

連續給3次機會,3次以後,會提示剩餘2次機會、密碼登入、取消指紋驗證

5次輸入錯誤,指紋識别彈框消失

指紋識别和人臉識别

第2次調用指紋識别,如上邏輯,若還未驗證通過,需要鎖屏啟用指紋識别

3、貼上代碼

- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
    //1、判斷系統版本
    if ([UIDevice currentDevice].systemVersion.floatValue >= ) {

        // 可以使用指紋識别  -> 5s以後機型
        //2、判斷機型是否支援指紋識别

        //2.1、建立LA對象上下文
        LAContext *context = [[LAContext alloc] init];

        //2.2、判斷能否使用
        /**
         @param LAPolicy 評估
         @return 政策
         */
        if ([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:nil]) {
            //可以使用

            //3、開啟使用指紋識别
            /**
             @param LAPolicy 可以使用指紋識别政策
             @param localizedReason 提示使用者的資訊
             */
            [context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:@"請把你的雞爪放在home鍵上驗證指紋" reply:^(BOOL success, NSError * _Nullable error) {

                //判斷是否成功
                if (success) {

                    NSLog(@"驗證成功");
                    dispatch_sync(dispatch_get_main_queue(), ^{

                        //在主線程中更新UI

                    });

                } else {
                    NSLog(@"驗證失敗");
                }

                if (error) {
                    switch (error.code) {
                        case -:
                            NSLog(@"超出驗證次數限制,提示鎖屏,重新驗證!");
                            break;

                        case -:
                            NSLog(@"使用者點選了取消指紋驗證");
                            break;
                        case -:
                            NSLog(@"點選了密碼登入");
                            break;
                        case -:
                            NSLog(@"鎖屏功能被鎖定,請鎖屏手機,密碼登入啟用指紋識别!");
                            break;
                        default:
                            break;
                    }
                }

            }];

        } else {

            NSLog(@"對不起,5s以上機型才可以使用該功能");
        }

    } else {
        NSLog(@"系統版本過低,無法使用指紋識别!");
    }
}
           

二、人臉識别