美文网首页
Touch ID使用详细分解

Touch ID使用详细分解

作者: DSA碼侬 | 来源:发表于2017-03-30 14:48 被阅读30次

由于最近要使用指纹解锁app,就暂且了解了一下,注释非常详细。需要注意的是在successBlock里面代码是后台线程执行的。

如果需要放在主线程,可添加到主线程上执行:

1、点击屏幕,弹出Touch ID框

- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
    // ios8.0以上 iphone5s之后才有touchID功能
    [self authenticateUser];

}

2、实现方法

- (void)authenticateUser
{
    //初始化上下文对象
    LAContext* context = [[LAContext alloc] init];
    
    //localizedFallbackTitle设置为@""代表指纹输错不会出现右侧“输入密码”字样
    context.localizedFallbackTitle = @"";

    //错误对象
    NSError* error = nil;
    NSString* result = @"xxx利用你的Touch ID解锁";
    
    //首先使用canEvaluatePolicy 判断设备是否支持Touch ID的状态
    if ([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error]) { // 主线程
        //支持指纹验证
        [context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:result reply:^(BOOL success, NSError \*error) {
#warning 后台线程
            if (success) {
                //验证成功,后台线程
                NSLog(@"验证成功");
            }
            else
            {
                switch (error.code) {
                    case LAErrorSystemCancel:
                    {
                        //切换到其他APP,系统取消验证Touch ID 其他app切入
                        NSLog(@"切换到其他APP,系统取消验证Touch ID 其他app切入Authentication was cancelled by the system"); 
                        break;
                    }
                    case LAErrorAppCancel:
                    {
                        NSLog(@"用户不能控制的挂起 比如打电话");
                        break;
                    }
                    case LAErrorUserCancel:
                    {
                        //用户取消验证Touch ID
                        NSLog(@"用户取消验证Touch IDAuthentication was cancelled by the user"); 
                        break;
                    }
                    case LAErrorUserFallback:
                    {
                        NSLog(@"用户选择输入密码,切换主线程处理User selected to enter custom password");
                        [[NSOperationQueue mainQueue] addOperationWithBlock:^{
                            //用户选择输入密码,切换主线程处理
                        }];
                        break;
                    }
                    case LAErrorTouchIDLockout:
                    {
                       NSLog(@"多次TouchID失败 Touch ID被锁");// 输入多次不正确 执行代码
                        break;
                    }
                    case LAErrorInvalidContext:
                    {
                        NSLog(@"LAContext对象被释放掉了,造成的授权失败");
                        break;
                    }
                    default:
                    {
                        [[NSOperationQueue mainQueue] addOperationWithBlock:^{
                            //其他情况,切换主线程处理
                        }];
                        break;
                    }
                }
                NSLog(@"%@",error.localizedDescription);
            }
        }];
    }
    else{ //不支持指纹识别,LOG出错误详情。比如设备不支持或者指纹没开启(指纹没开启也包括输入错误多次被锁定Touch ID)
         #warning 主线程
        switch (error.code) {
            case LAErrorTouchIDNotEnrolled:
            {
                // 设备Touch ID不可用 用户未录入
                NSLog(@"设备Touch ID不可用 用户未录入TouchID is not enrolled"); 
                break;
            }
            case LAErrorPasscodeNotSet:
            {
                // 系统未设置密码
                NSLog(@"系统未设置密码A passcode has not been set");
                break;
            }
            case LAErrorTouchIDNotAvailable:
            {
                // 设备Touch ID不可用,例如未打开
                NSLog(@"设备Touch ID不可用,例如未打开A passcode has not been set");
                break;
            }
            default:
            {
                // Touch ID被锁定之后,点击屏幕跳到这里
                NSLog(@"TouchID not available");
                break;
            }
        }
        
        NSLog(@"%@",error.localizedDescription);
    }
}

相关文章

  • Touch ID使用详细分解

    由于最近要使用指纹解锁app,就暂且了解了一下,注释非常详细。需要注意的是在successBlock里面代码是后台...

  • Touch ID 使用

    简单记录一下如何在自己的 APP 中调用系统 Touch ID 注意: 代码:

  • Touch ID 使用

    介绍 Touch ID是iPhone5S后加入的一项新的功能,也就是大家熟知的指纹识别技术。iOS8后苹果开放了T...

  • Touch ID使用

    前言:如果图片看不了请移步:简书 Touch ID简介 Touch ID指纹识别作为iPhone 5s上的“杀手级...

  • 使用Touch Id验证

    在新版支付宝和新版QQ中都加入了指纹识别功能,这么高大上的功能自然要学学怎么使用了。 像这种调用系统功能的,自然要...

  • Touch ID 简单使用

    Touch ID 指纹识别首次应用是在2013年9月发布的iPhone 5s 上。在今天,指纹识别已经是所有智能手...

  • iOS 填坑之Touch ID与Face ID

    一、Touch ID 2013年随iPhone 5s面世,Apple开启了,Touch ID解锁在移动终端上的使用...

  • Mac Book 上的touch id妙用

    使用新版的macbook或pro都是支持Touch ID。 Touch ID在工作生活中,有哪些妙用。今天介绍一下...

  • SwiftUI: 使用 Touch ID 和 Face ID

    苹果绝大多数设备都以生物识别身份验证为标准,这意味着它们使用指纹和面部识别来解锁。我们也可以使用此功能,这意味着我...

  • iOS Touch ID使用教程

    支持系统和机型 iOS系统的指纹识别功能最低支持的机型为iPhone 5s,最低支持系统为iOS 8,虽然安装iO...

网友评论

      本文标题:Touch ID使用详细分解

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