如何检查iOS App中用户是否不允许FACEID?

问题描述

当启用了Touch ID的应用首次在iPhone X上运行时,系统会询问用户是否要使用Face ID。如果拒绝,则将禁用人脸ID,并且永远不会再给用户使用该功能的选项。除了删除并重新安装该应用程序外,还有另一种启用Face ID的方法吗?权限图像如下所示:

FACEID permission

我已经使用以下代码集成了FaceID,如下所示:

  - (void)authenicateButtonTapped{
    LAContext *myContext = [[LAContext alloc] init];
    NSError *authError = nil;
    Nsstring *myLocalizedReasonString = @"Touch ID Test";
    myContext.localizedFallbackTitle = @"";
    
    if ([myContext canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&authError]) {
        [myContext evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics
                  localizedReason:myLocalizedReasonString
                            reply:^(BOOL success,NSError *error) {
            NSLog(@"success");
            
            if (success) {
                Nsstring *str = @"You are the owner of device";
                NSArray * result = [[NSArray alloc] initWithObjects:str,nil];
                dispatch_async(dispatch_get_main_queue(),^{
                    
                    //  executeClosure(callBack,result,NO);
                });
            } else {
                switch (error.code) {
                    case LAErrorAuthenticationFailed:
                        NSLog(@"Authentication Failed");
                        break;
                        
                    case LAErrorUserCancel:
                        NSLog(@"User pressed Cancel button");
                        break;
                        
                    case LAErrorUserFallback:
                        NSLog(@"User pressed Enter Password");
                        break;
                        
                    case LAErrorPasscodeNotSet:
                        NSLog(@"Passcode Not Set");
                        break;
                        
                    case LAErrorBiometryNotAvailable:
                        NSLog(@"Touch ID not available");
                        break;
                        
                    case LAErrorBiometryNotEnrolled:
                        NSLog(@"Touch ID not Enrolled or configured");
                        break;
                        
                    default:
                        NSLog(@"Touch ID is not configured");
                        break;
                }
                NSArray * result = [[NSArray alloc] initWithObjects:error.localizedDescription,nil];
                NSLog(@"Failure error: %@",result);
                dispatch_async(dispatch_get_main_queue(),^{
                    //  executeClosure(callBack,NO);
                    // Rather than show a UIAlert here,use the error to determine if you should push to a keypad for PIN entry.
                });
            }
        }];
    } else {
        NSArray * result = [[NSArray alloc] initWithObjects:authError.localizedDescription,nil];
        dispatch_async(dispatch_get_main_queue(),^{
            NSLog(@"Failure %@",result);
            
            //   executeClosure(callBack,NO);
            // Rather than show a UIAlert here,use the error to determine if you should push to a keypad for PIN entry.
        });
    }
}

请告诉我一旦我按下“不允许”,当我使用该应用程序时,请再次告诉我如何检查之前是否未授予该权限?基于此,我可以通过转到设置页面来要求用户启用该功能,但是到目前为止,我仍然停留在如何确定该权限是否被拒绝的问题上。

解决方法

删除和重新安装该应用程序的快捷方式还有另一种启用Face ID的方法吗?

设置-> your App->人脸ID

enter image description here

请告诉我一旦我按下“不允许”,当我使用该应用程序时,请再次告知如何检查该权限是否早先被授予?

如果以下内容返回FALSE

if ([myContext canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&authError]) {