iOS Touch ID使用

1.首先导入头文件

#import <LocalAuthentication/LocalAuthentication.h>

2.关键代码

复制代码
- (void)validateTouchID {
    LAContext *context = [[LAContext alloc] init];
    NSError *error;
    NSString *tip = @"通过Home键验证已有手机指纹";
    //  判断手机是否有指纹
    if ([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error]) {
        [context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:tip reply:^(BOOL success, NSError *error) {
            if (success) {
                //  验证成功
                NSLog(@"success");
            } else {
                NSLog(@"%@",error.description);
                switch (error.code) {
                    case LAErrorSystemCancel:
                        NSLog(@"系统取消授权");
                        break;
                    case LAErrorUserCancel:
                        NSLog(@"用户取消");
                        break;
                    case LAErrorUserFallback:
                        NSLog(@"用户输入密码");
                        break;
                    default:
                        break;
                }
            }
        }];
    } else {
        NSLog(@"不支持指纹识别,%@",error.description);
    }
}
复制代码

3.LAError枚举相关解释

复制代码
typedef NS_ENUM(NSInteger, LAError) {
    /// 认证不成功,因为用户没有提供有效的凭据
    LAErrorAuthenticationFailed = kLAErrorAuthenticationFailed,
    
    /// 被用户取消验证(例如:“取消”按钮)。
    LAErrorUserCancel           = kLAErrorUserCancel,
    
    /// 认证被取消了,因为用户点击回退按钮(输入密码)。
    LAErrorUserFallback         = kLAErrorUserFallback,
    
    /// 通过系统(例如另一个应用程序的应用程序)被取消验证。
    LAErrorSystemCancel         = kLAErrorSystemCancel,
    
    /// 认证无法启动,因为密码没有设置在设备。
    LAErrorPasscodeNotSet       = kLAErrorPasscodeNotSet,

    /// 无法启动验证,因为在设备上不提供触摸标识。
    LAErrorTouchIDNotAvailable  = kLAErrorTouchIDNotAvailable,
    
    /// 无法启动验证,因为触摸标识没有注册手指。
    LAErrorTouchIDNotEnrolled   = kLAErrorTouchIDNotEnrolled,
} NS_ENUM_AVAILABLE(10_10, 8_0);
复制代码

4.效果图

 

如果你不是在wb145230博客园看到本文,请点击查看原文.

 

posted @   wb145230  阅读(952)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示