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

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

运行效果 :

识别中效果

下面是代码实现

步骤一

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

#import <LocalAuthentication/LocalAuthentication.h>

步骤二,

判断设备是否支持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(指纹识别)技术的使用!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

QNMJD

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值