如何提高登录验证的速度?

时间:2014-12-03 17:50:06

标签: ios objective-c iphone

我正在努力添加LocalAuthentication框架,以允许用户使用类似设备上的指纹进行身份验证。一切正常,但是当用户使用他们的指纹进行身份验证时,需要10-15秒才能执行正确的segue,这是典型的,还是我对用户进行身份验证的方式有问题? 代码:

-(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];
} }

1 个答案:

答案 0 :(得分:2)

因此,执行segue可能与视图操作有关,该视图操作应主要在主线程上执行。我不太确定,但很可能是evaluatePolicy方法在后台线程上执行。如果是这种情况,您可能希望在主线程上抛出performSegue

为此,请使用:

dispatch_async(dispatch_get_main_queue(), ^{
    [self performSegueWithIdentifier:@"loginSeg" sender:self];
});