iOS开发之Touch ID指纹验证

iOS8.0以上支持指纹验证,允许App对用户身份进行本地验证。

使用Touch ID 需要两步即可。
1、检查Touch ID是否可用
2、获得指纹验证结果


集成

  1. 依赖框架
    导入LocalAuthentication.framework
#import <LocalAuthentication/LocalAuthentication.h>
  1. 代码
- (void)authenticateUser
{
    //做iOS 8以下版本适配时,务必进行API验证,避免调用相关API引起崩溃。
    if ([UIDevice currentDevice].systemVersion.floatValue < 8.0) return;
    //初始化上下文对象
    LAContext *context = [[LAContext alloc] init];
    //错误对象
    NSError *error = nil;
    NSString *result = @"请验证已有指纹";
    //首先使用canEvaluatePolicy 判断设备支持状态
    if ([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error])
    {
        //支持指纹验证
        [context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:result reply:^(BOOL success, NSError *error) {
            if (success) {
                //验证成功,主线程处理UI
                NSLog(@"...");
            }
            else
            {
                NSLog(@"%@",error.localizedDescription);
                switch (error.code) {
                    case LAErrorSystemCancel:
                    {
                        NSLog(@"Authentication was cancelled by the system");
                        //切换到其他APP,系统取消验证Touch ID
                        break;
                    }
                    case LAErrorUserCancel:
                    {
                        NSLog(@"Authentication was cancelled by the user");
                        //用户取消验证Touch ID
                        break;
                    }
                    case LAErrorUserFallback:
                    {
                        NSLog(@"User selected to enter custom password");
                        [[NSOperationQueue mainQueue] addOperationWithBlock:^{
                            //用户选择输入密码,切换主线程处理
                        }];
                        break;
                    }
                    case LAErrorAuthenticationFailed:
                    {
                        //授权失败(连续三次指纹识别错误)
                        NSLog(@"Application retry limit exceeded");
                        break;
                    }
                    case LAErrorTouchIDLockout:
                    {
                        //iOS9第一次输错会锁住指纹验证功能,然后要求输入密码来激活指纹验证
                        NSLog(@"Biometry is locked out");
                        break;
                    }
                    case LAErrorAppCancel:
                    {
                        //用户不能控制的挂起,例如突然来了电话,电话应用进入前台,APP被挂起
                        NSLog(@"");
                    }
                    case LAErrorInvalidContext:
                    {
                        //授权过程中,LAContext对象被释放掉了,造成的授权失败
                        NSLog(@"");
                    }
                    case LAErrorTouchIDNotAvailable:
                    {
                        //设备Touch ID不可用,例如未打开
                        break;
                    }
                    default:
                    {
                        [[NSOperationQueue mainQueue] addOperationWithBlock:^{
                            //其他情况,切换主线程处理
                        }];
                        break;
                    }
                }
            }
        }];
    }
    else
    {
        //不支持指纹识别,打印出错误详情
        switch (error.code) {
            case LAErrorTouchIDNotEnrolled:
            {
                //设备Touch ID不可用,用户未录入
                //No fingers are enrolled with Touch ID
                NSLog(@"TouchID is not enrolled");
                break;
            }
            case LAErrorPasscodeNotSet:
            {
                //系统未设置密码
                NSLog(@"A passcode has not been set");
                break;
            }
            default:
            {
                NSLog(@"TouchID not available");
                break;
            }
        }
        NSLog(@"%@",error.localizedDescription);
    }
}

这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值