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);
}
}
刷新状态:
