Face ID(面部识别)和Touch ID(指纹识别)生物识别的使用iOS (附完整代码)

        越来的多的项目使用了Face ID(面部识别)和Touch ID(指纹识别),不得不说确实很方便。最近整理了一下完整的使用方法,放在下面。

运行效果 :

识别中效果

下面是代码实现

步骤一

首先我们需要引入头文件#import ,这个框架里封装了我们需要的生物识别模块。

#import 

步骤二,

判断设备是否支持Face ID(面部识别)和Touch ID(指纹识别)

  //创建LAContext
    LAContext *context = [[LAContext alloc] init];
    //验证失败之后的弹出框的选项
    context.localizedFallbackTitle = @"账号密码登陆";

    NSError*error =nil;
    //是否支持Face ID或Touch ID
    BOOL canUseFaceOrTouchID = [context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error];

步骤三,

进行识别及识别成功和失败操作


    //创建LAContext
    LAContext *context = [[LAContext alloc] init];
    //验证失败之后的弹出框的选项
    context.localizedFallbackTitle = @"账号密码登陆";

    NSError*error =nil;
    //是否支持Face ID或Touch ID
    BOOL canUseFaceOrTouchID = [context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error];
    if(canUseFaceOrTouchID) {
        //开始验证,会有弹出框出来
        //localizedReason为验证失败时提示语
        [context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:@"验证失败!不是本人?" reply:^(BOOL success, NSError * _Nullable error) {
            if(success) {
                dispatch_async(dispatch_get_main_queue(), ^{
                    NSLog(@"生物识别成功");
                  //这里执行你的下一步操作
                });

            }else{
                                         
                NSLog(@"生物识别失败");
                
                //下面是各种失败的原因,在这里可以进行失败时不同的操作
                switch(error.code) {
                    caseLAErrorSystemCancel: {
                        NSLog(@"系统取消授权,如其他APP切入");
                        break;
                    }
                        
                    caseLAErrorUserCancel: {
                        NSLog(@"用户取消验证Face ID");
                        break;
                    }
                    case LAErrorAuthenticationFailed: {
                        NSLog(@"授权失败");
                        break;
                    }
                        
                    caseLAErrorPasscodeNotSet: {
                        NSLog(@"系统未设置密码");
                        break;
                    }
                        
                    case LAErrorBiometryNotAvailable: {
                        NSLog(@"设备Face ID不可用,例如未打开");
                        break;
                    }
                        
                    case LAErrorBiometryNotEnrolled: {
                        NSLog(@"设备Face ID不可用,用户未录入");
                        break;
                        
                    }
                    case LAErrorUserFallback: {
                            NSLog(@"用户选择输入密码,切换主线程处理");
                        break;
                    }
                        
                    default: {
                            
                            NSLog(@"其他情况");
                        break;
                    }
                }
            }
        }];
        
    }else{
        
        NSLog(@"不支持Face ID或Touch ID");
        
        switch(error.code) {
                
            case LAErrorBiometryNotEnrolled: {
                
                NSLog(@"Face ID未注册");
                break;
            }
                
            case LAErrorPasscodeNotSet: {
                NSLog(@"未设置密码");
                break;
            }
                
            default: {
                NSLog(@"Face ID不可用");
                break;
                
            }
                
        }
        
        NSLog(@"%@",error.localizedDescription);
        
    }

重要提醒:这时,你运行程序,系统较低的手机可以正常识别。但是使用较新的系统时,会有闪退现象,不要着急,你是不是忘记了iOS的隐私政策。查看一下你的plist文件里是否加了Face ID没加的话,加上即可。

至此,恭喜你学会了iOS系统中 Face ID(面部识别)和Touch ID(指纹识别)技术的使用!

你可能感兴趣的:(Face,ID,Touch,ID,iOS,ios,安全)