iOS获取苹果touch-ID,faceID密码弹窗

本文介绍了如何在iOS应用中使用LAContext进行Touch ID和Face ID的验证,包括支持的错误处理和不同场景的响应,如用户取消、系统取消、选择输入密码等。此外,还涵盖了错误代码及其含义。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

// 创建指纹验证对象

    LAContext *context = [[LAContext alloc] init];

    // 创建error

    NSError *error = nil;

    // 验证设备是否支持touchID

    if ([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error]) {

        // 支持touchID

        [context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:@"XMGlocalizedReason" reply:^(BOOL success, NSError * _Nullable error) {

            if (success) {

                NSLog(@"验证成功--继续处理相关业务(注意线程");

            } else {

                NSLog(@"%@",error.localizedDescription);

                switch (error.code) {

                    case LAErrorSystemCancel:

                    {

                        NSLog(@"切换到其他APP,系统取消验证Touch ID");

                        break;

                    }

                    case LAErrorUserCancel:

                    {

                        NSLog(@"用户取消验证Touch ID");

                        break;

                    }

                    case LAErrorUserFallback:

                    {

                        NSLog(@"用户选择输入密码,切换主线程处理");

                        [[NSOperationQueue mainQueue] addOperationWithBlock:^{

                        }];

                        break;

                    }

                    default:

                    {

                        [[NSOperationQueue mainQueue] addOperationWithBlock:^{

                            //其他情况,切换主线程处理

                        }];

                        break;

                    }

                }

            }

        }];

    } else {

        switch (error.code) {

            case LAErrorTouchIDNotEnrolled:

                NSLog(@"LAErrorTouchIDNotEnrolled");

                break;

            case LAErrorPasscodeNotSet:

                NSLog(@"LAErrorPasscodeNotSet"); // 此处触发showPasscodeResetAlert方法

                break;

            default:

                NSLog(@"Touch ID is unaviliable");

                break;

        }

        NSLog(@"%@", error.localizedDescription);

    }


/*

 typedef NS_ENUM(NSInteger, LAError)

 {

 //授权失败

 LAErrorAuthenticationFailed = kLAErrorAuthenticationFailed,

 

 //用户取消Touch ID授权

 LAErrorUserCancel           = kLAErrorUserCancel,

 

 //用户选择输入密码

 LAErrorUserFallback         = kLAErrorUserFallback,

 

 //系统取消授权(例如其他APP切入)

 LAErrorSystemCancel         = kLAErrorSystemCancel,

 

 //系统未设置密码

 LAErrorPasscodeNotSet       = kLAErrorPasscodeNotSet,

 

 //设备Touch ID不可用,例如未打开

 LAErrorTouchIDNotAvailable  = kLAErrorTouchIDNotAvailable,

 

 //设备Touch ID不可用,用户未录入

 LAErrorTouchIDNotEnrolled   = kLAErrorTouchIDNotEnrolled,

 } NS_ENUM_AVAILABLE(10_10, 8_0);

 

 */



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值