关于iPhone手机的指纹解锁和面容解锁

首先大家要弄清一件事,那就是指纹解锁和面容解锁两种方式是分开的,这点不用我们操心,因为苹果爸爸已经很好的给我们区分开了。
1.在iPhoneX 以下的设备都是指纹解锁 Touch ID(5s以上设备)
2.在iPhoneX 以上的设备都是面容解锁 Face ID (包含iPhoneX)
接下来,说点正事。就是不管事指纹还是面容对于我们来说都是一套代码,一个框架。这是我比较感到欣慰的。

框架用的是 #import <LocalAuthentication/LocalAuthentication.h>
类用的是 LAContext
根据 LAContext 的一些属性和方法进行设置和调用来完成我们项目的需求!
LAContext* context = [[LAContext alloc] init];
context.localizedFallbackTitle = @"自定义按钮的文本";
context.localizedCancelTitle = @"取消按钮的文本";
context.localizedReason = @"写解锁原因";
/*
LAPolicyDeviceOwnerAuthentication //系统密码
LAPolicyDeviceOwnerAuthenticationWithBiometrics //自定义密码
*/

核心代码

//指纹解锁调用方法
-(void)FingerprintIdentification2{
    
    // 初始化上下文对象
    LAContext* context = [[LAContext alloc] init];
    NSError* error = nil;
    NSString* result = @"需要您的支付进行支付";
  //localizedReason:result  (解锁原因)
    context.localizedFallbackTitle = @"快捷支付";
    context.localizedCancelTitle = @"取消";
    NSLog(@"data before authentication = %@",[context evaluatedPolicyDomainState]);
    
    // 首先使用canEvaluatePolicy 判断设备支持状态
    if ([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error]) {

        // 支持指纹验证
        [context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:result reply:^(BOOL success, NSError *error) {
            if (success) {
                //验证成功,主线程处理UI
                NSLog(@"验证成功...");
                NSLog(@"data after authentication = %@",[context evaluatedPolicyDomainState]);
            }else{
                NSLog(@"%@",error.localizedDescription);
                switch (error.code) {
                    case LAErrorSystemCancel:
                    {
                        NSLog(@"Authentication was cancelled by the system");
                        //切换到其他APP,系统取消验证Touch ID
                        break;
                    }
                    case LAErrorUserCancel:
                    {
                        NSLog(@"Authentication was cancelled by the user");
                        //用户取消验证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);
        //不支持指纹识别,LOG出错误详情
        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;
            }
        }
    }
}

谢谢阅读!有不正确的,请您指出,加以改正!

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一直想玩玩指纹解锁,近期时间比较闲,就研究了一下这个指纹解锁。这个功能实现起来还是很简单的,虽然看起来比较高大上,...
    weicyNO_1阅读 3,227评论 0 3
  • 前言:如果图片看不了请移步:简书 Touch ID简介 Touch ID指纹识别作为iPhone 5s上的“杀手级...
    珍此良辰阅读 3,011评论 3 6
  • 55 从前我以为人生最大的悲剧便是高考落榜,以致于当高考前的几个月,我成天的失眠,我不停的告诉自己:“快点睡,快点...
    蓝蛹阅读 222评论 0 0
  • 阅读可以分为四个阶段:第一阶段是基础阅读,第二阶段是系统略读,第三阶段是分析阅读,第四阶段是主题阅读。
    晓祎琴阅读 73评论 0 0
  • 大风狂啸,一夜入秋。北京的天气总是这样的忽然。占星所有基础的独立元素,都已经写过一遍了。下一步,要进行的就是多角度...
    草渝田阅读 410评论 0 2