iOS开发之指纹解锁
iOS开发之指纹解锁
云上飞飞 发表于1年前
iOS开发之指纹解锁
  • 发表于 1年前
  • 阅读 5
  • 收藏 0
  • 点赞 0
  • 评论 0

【腾讯云】如何购买服务器最划算?>>>   

#import <LocalAuthentication/LocalAuthentication.h>  
指纹验证的实现
- (void)authenticateUser  
{  
    //初始化上下文对象  
    LAContext* context = [[LAContext alloc] init];  
    //错误对象  
    NSError* error = nil;  
    NSString* result = @"Authentication is needed to access your notes.";  

    //首先使用canEvaluatePolicy 判断设备支持状态  
    if ([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error]) {  
        //支持指纹验证  
        [context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:result reply:^(BOOL success, NSError *error) {  
            if (success) {  
                //验证成功,主线程处理UI  
            }  
            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;  
                    }  
                    default:  
                    {  
                        [[NSOperationQueue mainQueue] addOperationWithBlock:^{  
                           //其他情况,切换主线程处理   
                        }];  
                        break;  
                    }  
                }  
            }  
        }];  
    }  
    else  
    {  
        //不支持指纹识别,LOG出错误详情  

        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);  
        [self showPasswordAlert];  
    }  }  

对几种情况的说明
typedef NS_ENUM(NSInteger, LAError)  
{  
    //授权失败  
    LAErrorAuthenticationFailed = kLAErrorAuthenticationFailed,  

    //用户取消Touch ID授权  
    LAErrorUserCancel           = kLAErrorUserCancel,  

   //用户选择输入密码  
    LAErrorUserFallback         = kLAErrorUserFallback,  

    //系统取消授权(例如其他APP切入)  
    LAErrorSystemCancel         = kLAErrorSystemCancel,  

   //系统未设置密码  
    LAErrorPasscodeNotSet       = kLAErrorPasscodeNotSet,  

   //设备Touch ID不可用,例如未打开  

   LAErrorTouchIDNotAvailable  = kLAErrorTouchIDNotAvailable,  

    //设备Touch ID不可用,用户未录入  
    LAErrorTouchIDNotEnrolled   = kLAErrorTouchIDNotEnrolled,  
} NS_ENUM_AVAILABLE(10_10, 8_0);

 

共有 人打赏支持
粉丝 6
博文 89
码字总数 67017
×
云上飞飞
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: