应用TouchID解锁

第一步 导入对应的头文件
#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 LAErrorTouchIDNotAvailable:
                        NSLog(@"不能获取到指纹");
                        break;
                    case LAErrorUserFallback:
                        NSLog(@"用户选择不使用TouchID解锁,即解锁失败后,点击右侧按钮");
                        [[NSOperationQueue mainQueue] addOperationWithBlock:^{
                            NSLog(@"用户选择使用密码登录");
                        }];
                        break;
                    default:
                        [[NSOperationQueue mainQueue] addOperationWithBlock:^{
                            NSLog(@"未知情况,返回主线程进行处理");
                        }];
                        break;
                }
            }
        }];
    }else{
        NSLog(@"不支持指纹解锁");
        NSLog(@"%@",error.localizedDescription);
    }
}

代码地址:
https://github.com/FlyingKuiKui/TouchID.git

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值