#import "ViewController.h"
// iPhone5S开始, 6S第二代, 指纹识别验证 YES/NO
// 授权验证, 指纹识别框架
#import <LocalAuthentication/LocalAuthentication.h>
@interface ViewController ()
// 指纹识别
@property (strong, nonatomic) LAContext *context;
@end
@implementation ViewController
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
// 弹出指纹验证
self.context = [[LAContext alloc] init];
// 判断硬件是否支持
/**
LAPolicyDeviceOwnerAuthenticationWithBiometrics NS_ENUM_AVAILABLE(NA, 8_0) = kLAPolicyDeviceOwnerAuthenticationWithBiometrics, // 指纹识别, 5次失败上锁
LAPolicyDeviceOwnerAuthentication NS_ENUM_AVAILABLE(10_11, 9_0) = kLAPolicyDeviceOwnerAuthentication // 指纹识别, 6次失败上锁
*/
NSError *error;
// 判断设备是否可以使用指纹识别
BOOL isAuthentication = [self.context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error];
if (isAuthentication == NO || error) {
NSLog(@"不能使用: %@", error);
return;
}
/**
请求进行指纹识别
localizedReason: 告诉用户使用指纹识别的目的
*/
NSString *reason = @"使用指纹进行用户登陆";
[self.context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:reason reply:^(BOOL success, NSError * _Nullable error) {
/**
// 指纹验证失败
LAErrorAuthenticationFailed = kLAErrorAuthenticationFailed,
// 用户取消, 点击了取消按钮
LAErrorUserCancel = kLAErrorUserCancel,
// 用户取消, 点出了输入密码
LAErrorUserFallback = kLAErrorUserFallback,
// 系统取消, (比如App进入后台)
LAErrorSystemCancel = kLAErrorSystemCancel,
// 不能开始指纹验证, 设备没有设置密码
LAErrorPasscodeNotSet = kLAErrorPasscodeNotSet,
// 不能开始指纹验证, Touch ID 不能用
LAErrorTouchIDNotAvailable = kLAErrorTouchIDNotAvailable,
// 不能开始指纹验证, Touch ID 没有录入指纹
LAErrorTouchIDNotEnrolled = kLAErrorTouchIDNotEnrolled,
// 指纹验证失败, 太多次的验证失败导致
// TouchID 锁住了, 需要输入密码
LAErrorTouchIDLockout NS_ENUM_AVAILABLE(10_11, 9_0) = kLAErrorTouchIDLockout,
// App 取消了指纹验证
LAErrorAppCancel NS_ENUM_AVAILABLE(10_11, 9_0) = kLAErrorAppCancel,
/// LAContext passed to this call has been previously invalidated.
LAErrorInvalidContext NS_ENUM_AVAILABLE(10_11, 9_0) = kLAErrorInvalidContext
*/
if (error) {
switch (error.code) {
case LAErrorAuthenticationFailed:
NSLog(@"指纹验证失败");
break;
case LAErrorUserCancel:
NSLog(@"用户取消了指纹验证");
break;
case LAErrorSystemCancel:
NSLog(@"系统取消了指纹验证");
break;
default:
break;
}
}
// 结果回调
if (success) {
NSLog(@"验证成功");
// 执行相关的功能代码
}
}];
}
@end
实用知识:指纹识别功能的实现
最新推荐文章于 2023-02-10 00:12:12 发布