2

我正在尝试创建一个具有 Face id 功能的应用程序。但是当我尝试处理错误代码时,我只能捕获 LAErrorUserCancel。我无法捕获其他错误代码,例如 LAErrorAuthenticationFailed。

        [context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:@"asd"   reply:
         ^(BOOL success, NSError *authenticationError) {

             if (success) {
                 [[NSOperationQueue mainQueue] addOperationWithBlock:^(void){
                     [NSTimer scheduledTimerWithTimeInterval:1/40
                                                      target:self
                                                    selector:@selector(registerTouchID)
                                                    userInfo:nil
                                                     repeats:NO];
                 }];
             }
             else {
                 switch (authenticationError.code) {
                     case LAErrorAuthenticationFailed:
                         dispatch_async(dispatch_get_main_queue(), ^{
                            [self TouchFail];
                         });
                         break;

                     case LAErrorUserCancel:
                         NSLog(@"User pressed Cancel button");
                         break;

                     case LAErrorUserFallback:
                         NSLog(@"User pressed \"Enter Password\"");
                         break;

                     case LAErrorBiometryLockout:
                         dispatch_async(dispatch_get_main_queue(), ^{
                             [self LockoutAlert];
                         });
                         break;
                     default:
                         break;
                 }
             }
         }];
4

2 回答 2

0

目前,iOS 会在 FaceID 尝试失败后显示“取消”按钮。这就是我们得到“LAErrorUserCancel”的原因。

对于 TouchID,它返回“LAErrorAuthenticationFailed”

于 2021-12-15T12:52:38.573 回答
-2

您可以通过错误获取错误代码。_code =-6 或 -4 那样...

只需在日志中使用 PO 语句来获取错误并进行相应处理。

于 2020-03-28T20:21:55.657 回答