美文网首页
TouchID 指纹解锁

TouchID 指纹解锁

作者: NXAristotle | 来源:发表于2017-02-27 10:44 被阅读29次

简单的介绍

苹果于iOS 8时推出了TouchID(所以iPhone5及以下的设备是不支持的),并且进行了很完善的封装,非常的安全,且使用起来很简单。

实现过程及需要注意的地方

1.引入头文件

#import <LocalAuthentication/LocalAuthentication.h>

2.具体实现的完整代码:

//  进行touchID验证
- (IBAction)enterAboutBtn:(UIButton *)sender {
    LAContext *content = [[LAContext alloc] init];
    content.localizedCancelTitle = @"要取消";   /**< 弹出的两个取消按钮的文案 */
    content.localizedFallbackTitle = @"使用锁屏密码进入";  /**< 如果允许使用锁屏密码进入的话 */
    
    /*
     LAPolicyDeviceOwnerAuthenticationWithBiometrics : 该模式下,连续超过5次错误,系统会自动上锁(返回’Biometry is locked out.‘的提示),并且不会自动转到密码输入框,需要锁屏,用密码解锁一次才能再次使用
     LAPolicyDeviceOwnerAuthentication : 该模式下,允许连续输入6次错误,然后自动切换到密码输入解锁模式
     */
    NSError *error = nil;
    if ([content canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error]) {
        NSLog(@"该设备支持指纹识别");
        [content evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:@"指纹解锁进入" reply:^(BOOL success, NSError * _Nullable error) {
            if (success) {
                NSLog(@"验证成功");
                //  当前线程非主线程,跳转vc属于刷新UI,必须在主线程上执行,否则可能导致crash,故此处用GCD回到主线程进行跳转处理
                dispatch_async(dispatch_get_main_queue(), ^{
                    NXTestTouchIDAboutViewController *VC = [[NXTestTouchIDAboutViewController alloc] init];
                    [self.navigationController pushViewController:VC animated:YES];
                });
                
                
            }else{
                NSLog(@"error:%@",error.localizedDescription);
                switch (error.code) {
                    case LAErrorSystemCancel:
                    {
                        NSLog(@"系统取消授权,如其他APP切入");
                        break;
                    }
                    case LAErrorUserCancel:
                    {
                        NSLog(@"用户取消验证Touch ID");
                        break;
                    }
                    case LAErrorAuthenticationFailed:
                    {
                        NSLog(@"授权失败");
                        break;
                    }
                    case LAErrorPasscodeNotSet:
                    {
                        NSLog(@"系统未设置密码");
                        break;
                    }
                    case LAErrorTouchIDNotAvailable:
                    {
                        NSLog(@"设备Touch ID不可用,例如未打开");
                        break;
                    }
                    case LAErrorTouchIDNotEnrolled:
                    {
                        NSLog(@"设备Touch ID不可用,用户未录入");
                        break;
                    }
                    case LAErrorUserFallback:
                    {
//                        此处的逻辑处理,也需要注意线程问题
                        break;
                    }
                    default:
                    {
//                     此处的逻辑处理,也需要注意线程问题
                        break;
                    }
                }
            }
        }];
        
    }else{
        NSLog(@"不支持指纹识别");
        switch (error.code) {
            case LAErrorTouchIDNotEnrolled:
            {
                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);
    }
}

3.注意事项及小结:
实现过程中需要注意的细节已经在注释中标明。

4.链接:
已经将示例工程放到github上,需要的自取。精力有限,若有发现有误之处,欢迎指正。GitHub示例工程链接

相关文章

  • TouchID 指纹解锁

    一直想实现指纹解锁的功能, 今天抽空翻阅下文档写个Demo。该功能实现起来是很简单的,因为苹果都已经帮我们封装好了...

  • TouchID指纹解锁

    原文地址:http://blog.csdn.net/personsky/article/details/52413...

  • TouchID 指纹解锁

    简单的介绍 苹果于iOS 8时推出了TouchID(所以iPhone5及以下的设备是不支持的),并且进行了很完善的...

  • iOS指纹解锁TouchID

    指纹解锁的使用越来越普遍了,主要是使用方便,再用之前还是先了解一下如何使用吧。 一、API介绍 使用指纹功能,必须...

  • IOS TouchID 指纹解锁

    ViewController.m Demo :http://pan.baidu.com/disk/home#lis...

  • ios TouchID

    1.引入指纹解锁必须的头文件 2.了解TouchID最主要的两个方法这个方法是判断设备是否支持TouchID的。 ...

  • Swift面容指纹识别LAManager

    前言 指纹识别(TouchID),面容识别(FaceID)在iPhone中是频繁使用的,随时随地都在关闭手机,解锁...

  • iOS-高仿支付宝手势解锁(九宫格)

    基上篇TouchID 指纹解锁 的技术文, 然后目前又练习一种解锁方式: 九宫格手势解锁. 在一些涉及个人隐私的场...

  • iOS-金融/理财APP中常用的安全措施

    1.指纹解锁 1.1使用 TouchID的使用很简单,适用于iOS8以上,iPhone5S以上,引入框架#impo...

  • iOS开发实现TouchID指纹解锁

    一直想实现一下指纹解锁,苦于一直没时间,最近终于闲了下来所以翻了翻文档看了看demo,完成了这篇教程。本功能实现起...

网友评论

      本文标题:TouchID 指纹解锁

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