美文网首页
iOS Face ID 与 Touch ID 的使用

iOS Face ID 与 Touch ID 的使用

作者: iOS_tree | 来源:发表于2023-05-08 22:53 被阅读0次

苹果手机支持Face ID和Touch ID进行用户身份验证,可以避免需要重复输入密码且安全的生物验证技术,使用方法也很简单。
1、导入需要使用到的库文件

#import<LocalAuthentication/LocalAuthentication.h>

2、判断是否可以使用该功能,方法如下

- (BOOL)canEvaluatePolicy:(LAPolicy)policy error:(NSError * __autoreleasing *)error

调用方法

    LAContext *context = [[LAContext alloc] init];
   BOOL canEvaluatePolicy = [context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error]

3、调用验证方法

- (void)evaluatePolicy:(LAPolicy)policy
       localizedReason:(NSString *)localizedReason
                 reply:(void(^)(BOOL success, NSError * __nullable error))reply
//支持 localizedReason为alert弹框的message内容
        [context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:@"请验证已有指纹" reply:^(BOOL success, NSError * _Nullable error) {
            if(success) {
                NSLog(@"面容/指纹验证通过");
                //在这里登录操作
            }else{
                NSLog(@"验证失败:%@",error.description);
                switch(error.code) {
                    case LAErrorSystemCancel:
                    {
                        NSLog(@"系统取消授权,如其他APP切入");
                        break;
                    }
                    case LAErrorUserCancel:
                    {
                        NSLog(@"用户取消验证Touch ID");
                    }
                    case LAErrorAuthenticationFailed:
                    {
                        NSLog(@"授权失败");
                        break;
                    }
                    case LAErrorPasscodeNotSet:
                    {
                        NSLog(@"系统未设置密码");
                        break;
                    }
                    case LAErrorBiometryNotAvailable:
                    {
                        NSLog(@"设备Touch ID不可用,例如未打开");
                        break;
                    }
                    case LAErrorBiometryNotEnrolled:
                    {
                        NSLog(@"设备Touch ID不可用,用户未录入");
                        break;
                    }
                    case LAErrorUserFallback:
                    {
                        [[NSOperationQueue mainQueue] addOperationWithBlock:^{
                            NSLog(@"用户选择输入密码,切换主线程处理");
                        }];
                        break;
                    }
                    default:
                    {
                        [[NSOperationQueue mainQueue] addOperationWithBlock:^{
                        NSLog(@"其他情况,切换主线程处理");
                        }];
                    break;
                    }
                }
            }
        }];
    }else{
        LABiometryType type = context.biometryType;
        NSLog(@"未设置面容/指纹: %ld", (long)type); // 无指纹/面容 0  指纹 1 面容 2
        NSLog(@"error : %@",error.description);
    }

相关文章

网友评论

      本文标题:iOS Face ID 与 Touch ID 的使用

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