第一步
导入对应的头文件
#import <LocalAuthentication/LocalAuthentication.h>
第二步
创建LAContext对象
LAContext *context = [LAContext new];
context.localizedFallbckTitle = @"右侧按钮标题";
localizedFallbckTitle 设置指纹解锁失败时,提示框的右侧按钮提示语
第三步
判断是否支持指纹解锁
- (BOOL)canEvaluatePolicy:(LAPolicy)policy error:(NSError * __autoreleasing *)error __attribute__((swift_error(none)));
支持指纹解锁,调用下述方法
- (void)evaluatePolicy:(LAPolicy)policy
localizedReason:(NSString *)localizedReason
reply:(void(^)(BOOL success, NSError * __nullable error))reply;
localizedReason 设置提示语,TouchID用于什么目的
如果支持指纹解锁,在上述reply代码块内对指纹解锁时出现的各种情况进行下一步处理。
示例代码如下:
- (void)TouchIDAction{
// 第二步,创建LAContext对象
LAContext *context = [LAContext new];
context.localizedFallbackTitle = @"右侧按钮标题"; // 解锁失败时,右侧按钮标题
NSError *error = nil;
// 第三步,判断是否支持指纹
if ([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error]) {
NSLog(@"支持指纹解锁");
[context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:@"通过Home键验证已有手机指纹" reply:^(BOOL success, NSError * _Nullable error) {
if (success) {
NSLog(@"指纹验证成功,返回主界面");
}else{
NSLog(@"%@",error.localizedDescription);
switch (error.code) {
case LAErrorSystemCancel:
NSLog(@"系统取消授权");
break;
case LAErrorUserCancel:
NSLog(@"用户取消指纹验证");
break;
case LAErrorAuthenticationFailed:
NSLog(@"提供验证的指纹,不存在");
break;
case LAErrorPasscodeNotSet:
NSLog(@"未设置指纹密码");
break;
case LAErrorTouchIDNotEnrolled:
NSLog(@"不能验证,指纹未被录入");
break;
case kLAErrorTouchIDLockout:
NSLog(@"超过5次输入错误,屏幕将锁住");
break;
case LAErrorTouchIDNotAvailable:
NSLog(@"不能获取到指纹");
break;
case LAErrorUserFallback:
NSLog(@"用户选择不使用TouchID解锁,即解锁失败后,点击右侧按钮");
[[NSOperationQueue mainQueue] addOperationWithBlock:^{
NSLog(@"用户选择使用密码登录");
}];
break;
default:
[[NSOperationQueue mainQueue] addOperationWithBlock:^{
NSLog(@"未知情况,返回主线程进行处理");
}];
break;
}
}
}];
}else{
NSLog(@"不支持指纹解锁");
NSLog(@"%@",error.localizedDescription);
}
}