应用TouchID解锁

作者: 翱翔的魁魁 | 来源:发表于2016-09-01 15:55 被阅读110次
    第一步

    导入对应的头文件

    #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);
        }
    }
    

    相关文章

      网友评论

        本文标题:应用TouchID解锁

        本文链接:https://www.haomeiwen.com/subject/hqacettx.html