美文网首页
iOS LAPolicy指纹解锁

iOS LAPolicy指纹解锁

作者: 倪大头 | 来源:发表于2018-05-09 12:16 被阅读17次

    LAPolicy是一个枚举,它提供两个值:LAPolicyDeviceOwnerAuthenticationWithBiometrics和LAPolicyDeviceOwnerAuthentication.

    LAPolicyDeviceOwnerAuthenticationWithBiometrics支持iOS8以上系统,LAPolicyDeviceOwnerAuthentication支持iOS9以上系统,LAPolicyDeviceOwnerAuthentication同时支持TouchID和设备密码认证。

    使用需导入:

    #import <LocalAuthentication/LocalAuthentication.h>
    
    //判断系统版本
    if (NSFoundationVersionNumber < NSFoundationVersionNumber_iOS_8_0) {
        [self showRequestError:self.view withReason:@"系统版本不支持TouchID"];
        return;
    }
            
    LAContext *context = [[LAContext alloc]init];
    context.localizedFallbackTitle = @"输入密码";
    NSError *error = nil;
            
    //判断是否可以使用TouchID
    if ([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error]) {
        [context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:@"Home键验证已有手机指纹" reply:^(BOOL success, NSError * _Nullable error) {
            if (success) {
                dispatch_async(dispatch_get_main_queue(), ^{
                    messageLabel.text = @"解锁成功";
                });
            }else {
                switch (error.code) {
                    case LAErrorAuthenticationFailed:
                    {
                        dispatch_async(dispatch_get_main_queue(), ^{
                            messageLabel.text = @"验证失败";
                        });
                        break;
                    }
                    case LAErrorUserCancel:
                    {
                        dispatch_async(dispatch_get_main_queue(), ^{
                            messageLabel.text = @"用户取消验证";
                        });
                        break;
                    }
                    case LAErrorUserFallback:
                    {
                        dispatch_async(dispatch_get_main_queue(), ^{
                            messageLabel.text = @"用户选择手动输入密码";
                                });
                        break;
                    }
                    case LAErrorSystemCancel:
                    {
                        dispatch_async(dispatch_get_main_queue(), ^{
                            messageLabel.text = @"被系统取消(如遇来电,锁屏,按了Home键等)";
                        });
                        break;
                    }
                    case LAErrorPasscodeNotSet:
                    {
                        dispatch_async(dispatch_get_main_queue(), ^{
                            messageLabel.text = @"用户未设置密码";
                        });
                        break;
                    }
                    case LAErrorTouchIDNotEnrolled:
                    {
                        dispatch_async(dispatch_get_main_queue(), ^{
                            messageLabel.text = @"用户未设置TouchID";
                        });
                        break;
                    }
                    case LAErrorTouchIDNotAvailable:
                    {
                        dispatch_async(dispatch_get_main_queue(), ^{
                            messageLabel.text = @"TouchID无效";
                        });
                        break;
                    }
                    case LAErrorTouchIDLockout:
                    {
                        dispatch_async(dispatch_get_main_queue(), ^{
                            messageLabel.text = @"多次验证失败,TouchID被锁定";
                        });
                        break;
                    }
                    case LAErrorAppCancel:
                    {
                        dispatch_async(dispatch_get_main_queue(), ^{
                            messageLabel.text = @"被APP取消(如切换到后台)";
                        });
                        break;
                    }
                    case LAErrorInvalidContext:
                    {
                        dispatch_async(dispatch_get_main_queue(), ^{
                            messageLabel.text = @"LAContext对象无效";
                        });
                        break;
                    }
                                
                    default:
                       break;
                }
           }
        }];
    }else {
        messageLabel.text = @"当前设备不支持TouchID";
    }
    

    相关文章

      网友评论

          本文标题:iOS LAPolicy指纹解锁

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