iOS专题资源__系统知识点iOSiOS 小demo

iOS 指纹识别

2016-11-21  本文已影响3043人  z4ywzrq

简介

苹果从iPhone5S开始,具有指纹识别技术,从iOS8.0之后苹果允许第三方 App 使用 Touch ID进行身份验证。指纹识别Touch ID提供3+2共5次指纹识别机会(3次识别失败后,弹出的指纹验证框会消失,同时会报错code = -1,然后点击指纹会再次弹框可验证两次),如果五次指纹识别全部错误,就需要手动输入数字密码,数字密码可以输入6次,如果6次输入的数字密码都错误,系统会停止验证,一定的间隔后才能再次输入密码验证,而且间隔会随着输入的次数增长。

使用方法

1.首先导入框架LocalAuthentication
2.判断系统版本,最低iOS 8.0
3.创建验证对象上下文LAContext
4.判断指纹识别技术是否可用canEvaluatePolicy
5.如果可用,开始调用方法开始使用指纹识别


#import <LocalAuthentication/LocalAuthentication.h>


//指纹按钮
- (void)showFingerprintTouch
{
    //系统支持,最低iOS 8.0
    if ([UIDevice currentDevice].systemVersion.floatValue >= 8.0)
    {
        LAContext * context = [[LAContext alloc] init];
        NSError * error;
        if ([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error])
        {
            
            //localizedReason: 指纹识别出现时的提示文字
            [context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:@"指纹解锁" reply:^(BOOL success, NSError * _Nullable error) {
                
                if (success)
                {
                    //识别成功
                    dispatch_async(dispatch_get_main_queue(), ^{
                            //在主线程中,处理 ......
                    });
                }
                else if (error)
                {
                    NSLog(@"LAPolicyDeviceOwnerAuthenticationWithBiometrics -- %@",error);
                }
                
            }];
            
        }
        else if([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthentication error:nil])
        {
            [context evaluatePolicy:LAPolicyDeviceOwnerAuthentication localizedReason:@"密码解锁" reply:^(BOOL success, NSError * _Nullable error){
                
                NSLog(@"LAPolicyDeviceOwnerAuthentication -- %@", error);
                
            }];
        }
        NSLog(@" --- %@ ", error);
    }
}

代码解析

指纹识别的策略

[context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:nil] [context canEvaluatePolicy:LAPolicyDeviceOwnerAuthentication error:nil]

错误情况

官方文档中给出的错误情况,有以下几种,如图:

简单介绍几种常出现的错误

3次验证失败后报错
Error Domain=com.apple.LocalAuthentication Code=-1 "Application retry limit exceeded." UserInfo={NSLocalizedDescription=Application retry limit exceeded

用户取消
Error Domain=com.apple.LocalAuthentication Code=-2

用户在弹出的指纹验证框中,点击输入密码
Error Domain=com.apple.LocalAuthentication Code=-3 "Fallback authentication mechanism selected."
可以判断这种错误 error.code == -3,进行后面的操作

设备没有设置指纹报错
Error Domain=com.apple.LocalAuthentication Code=-7 "No fingers are enrolled with Touch ID."

3+2次指纹验证都失败后报错,这种情况指纹解锁会被锁定,输入数字密码真确后才能再次进行指纹验证
Error Domain=com.apple.LocalAuthentication Code=-8 "Biometry is locked out."

注意事项

最后

附上带有指纹、手势和数字密码解锁的例子。传送门 GitHub

上一篇 下一篇

猜你喜欢

热点阅读