添加依赖库 LocalAuthentication.framework
#import <LocalAuthentication/LocalAuthentication.h> // 头文件
1 LAContext *context = [[LAContext alloc] init]; 2 NSError *error = nil; 3 // 这句代码是让指纹验证的提示框没有输入密码,也可以自己定义文字 4 context.localizedFallbackTitle = @""; 5 if ([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error]) { 6 [context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:@"请通过指纹验证解锁应用" reply:^(BOOL success, NSError * _Nullable error) { 7 if (success) { // 验证成功 8 // 指纹解锁是在子线程执行的,当你要刷新UI的时候需要回到主线程 9 dispatch_async(dispatch_get_main_queue(), ^{ 10 }); 11 } else { 12 switch (error.code) { 13 case LAErrorAuthenticationFailed: // 用户验证3次之后,这个指纹提示框就会消失 14 15 // 指纹解锁是在子线程执行的,当你要刷新UI的时候需要回到主线程 16 dispatch_async(dispatch_get_main_queue(), ^{ 17 18 }); 19 break; 20 21 case LAErrorUserCancel: // 用户取消 22 // 指纹解锁是在子线程执行的,当你要刷新UI的时候需要回到主线程 23 dispatch_async(dispatch_get_main_queue(), ^{ 24 25 }); 26 break; 27 28 case LAErrorUserFallback: // 用户点击输入密码,或者是自定义的文字 29 // 指纹解锁是在子线程执行的,当你要刷新UI的时候需要回到主线程 30 dispatch_async(dispatch_get_main_queue(), ^{ 31 32 }); 33 break; 34 } else { 35 36 NSLog(@"您的设备不能使用 TouchID 进行身份验证"); 37 38 UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"提示" message:@"您的设备不能使用 TouchID 进行身份验证" delegate:self cancelButtonTitle:@"确定" otherButtonTitles: nil]; 39 40 [alertView show]; 41 42 }