我正在努力添加 LocalAuthentication 框架,以允许用户在类似设备上使用指纹进行身份验证。一切正常,但是当用户通过指纹进行身份验证时,需要 10-15 秒才能执行正确的转接,这是典型的情况,还是我对用户进行身份验证的方式有问题? 代码:
-(void)viewDidLoad { [super viewDidLoad]; [self.view setBackgroundColor:[NPSColor NPSBackgroundColor]];
UIBarButtonItem *anotherButton = [[UIBarButtonItem alloc] initWithTitle:@"Register" style:UIBarButtonItemStylePlain target:self action:@selector(onRegisterTapped)]; self.navigationItem.rightBarButtonItem = anotherButton;
LAContext *context = [[LAContext alloc] init];
NSError *error = nil; if ([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error]) { [context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:@"Login?" reply:BOOL success, NSError *error {
if (error) {
}
if (success) {
[self performSegueWithIdentifier:@"loginSeg" sender:self];
} else {
}
}];
} else {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error"
message:@"Your device cannot authenticate using TouchID."
delegate:nil
cancelButtonTitle:@"Ok"
otherButtonTitles:nil];
[alert show];
} }
最佳答案
因此,执行 segue 可能与 View 操作有关,该操作主要应在主线程上执行。我不太确定,但很可能 evaluatePolicy 方法是在后台线程上执行的。如果是这种情况,您可能希望将 performSegue
放在主线程上。
为此,请使用:
dispatch_async(dispatch_get_main_queue(), ^{
[self performSegueWithIdentifier:@"loginSeg" sender:self];
});
关于ios - 如何提高登录认证的速度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27278338/