添加依赖库 LocalAuthentication.framework
#import <LocalAuthentication/LocalAuthentication.h> // 头文件
LAContext *context = [[LAContext alloc] init];
NSError *error = nil;
// 这句代码是让指纹验证的提示框没有输入密码,也可以自己定义文字
context.localizedFallbackTitle = @"";
if ([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error]) {
[context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:@"请通过指纹验证解锁应用" reply:^(BOOL success, NSError * _Nullable error) {
if (success) { // 验证成功
// 指纹解锁是在子线程执行的,当你要刷新UI的时候需要回到主线程
dispatch_async(dispatch_get_main_queue(), ^{
});
} else {
switch (error.code) {
case LAErrorAuthenticationFailed: // 用户验证3次之后,这个指纹提示框就会消失 // 指纹解锁是在子线程执行的,当你要刷新UI的时候需要回到主线程
dispatch_async(dispatch_get_main_queue(), ^{ });
break; case LAErrorUserCancel: // 用户取消
// 指纹解锁是在子线程执行的,当你要刷新UI的时候需要回到主线程
dispatch_async(dispatch_get_main_queue(), ^{ });
break; case LAErrorUserFallback: // 用户点击输入密码,或者是自定义的文字
// 指纹解锁是在子线程执行的,当你要刷新UI的时候需要回到主线程
dispatch_async(dispatch_get_main_queue(), ^{ });
break;
} else { NSLog(@"您的设备不能使用 TouchID 进行身份验证"); UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"提示" message:@"您的设备不能使用 TouchID 进行身份验证" delegate:self cancelButtonTitle:@"确定" otherButtonTitles: nil]; [alertView show]; }