应用TouchID解锁

来源:互联网 发布:域名过户需要多长时间 编辑:程序博客网 时间:2024/06/04 01:31
第一步 导入对应的头文件
#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);    }}
1 0
原创粉丝点击