FaceID人脸识别TouchID指纹识别iOS使用

这都2022年了还有小伙伴不会人脸识别指纹识别?

今天在交流群有人问起来说不会用, 那就补充一下给更多的小伙伴提供方便吧

先看效果

识别-成功-提示(刷新数据)

具体步骤如下:

1、进入页面开始识别

2、在回调中获取识别结果

3、根据结果刷新数据


识别实现代码:

-(void)faceID:(SuccessFace)successBlockfail:(FaildFace)failBlock{


    //创建LAContext

    LAContext *context = [[LAContext alloc] init];


    //这个属性是设置生物验证失败之后的弹出框的选项

    context.localizedFallbackTitle = @"使用账号密码登陆";


    //错误信息

    NSError*error =nil;

    //判断设备是否支持Face ID或Touch ID

    BOOL isUseFaceOrTouchID = [context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error];

    if(isUseFaceOrTouchID) {

        //这个是用来验证TouchID的,会有弹出框出来

        //字符串参数为验证失败时提示语

        [contextevaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:@"验证失败!或许你...不是本人?" reply:^(BOOL success, NSError * _Nullable error) {

            if(success) {


                dispatch_async(dispatch_get_main_queue(), ^{

                    NSLog(@"验证成功");

                    NSMutableDictionary * dic = [NSMutableDictionary dictionary];

                    [dicsetObject:@"验证成功"forKey:@"msg"];

                    successBlock(dic);

                });


            }else{

                NSLog(@"%@", error.localizedDescription);


                NSMutableDictionary * dic = [NSMutableDictionary dictionary];

                [dicsetObject:@"验证失败"forKey:@"msg"];

                failBlock(dic);


                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;

                    }

                    caseLAErrorUserFallback: {

                        [[NSOperationQueue mainQueue] addOperationWithBlock:^{

                            NSLog(@"用户选择输入密码,切换主线程处理");

                        }];

                        break;

                    }

                    default: {

                        [[NSOperationQueue mainQueue] addOperationWithBlock:^{

                            NSLog(@"其他情况,切换主线程处理");

                        }];

                        break;

                    }

                }

            }

        }];


    }else{

        NSLog(@"不支持Face ID或Touch ID");

        NSMutableDictionary * dic = [NSMutableDictionary dictionary];

        [dicsetObject:@"不支持Face ID或Touch ID" forKey:@"msg"];

        failBlock(dic);

        switch(error.code) {

            case LAErrorBiometryNotEnrolled: {

                NSLog(@"Face ID未注册");

                break;

            }

            case LAErrorPasscodeNotSet: {

                NSLog(@"未设置密码");

                break;

            }

            default: {

                NSLog(@"Face ID不可用");

                break;

            }

        }

        NSLog(@"%@",error.localizedDescription);

    }

}

刷新状态:


你可能感兴趣的:(FaceID人脸识别TouchID指纹识别iOS使用)