OGeek|极客世界-中国程序员成长平台

标题: ios - 如何提高登录验证的速度? [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-12 13:15
标题: ios - 如何提高登录验证的速度?

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

-(void)viewDidLoad { [super viewDidLoad]; [self.view setBackgroundColor:[NPSColor NPSBackgroundColor]];
UIBarButtonItem *anotherButton = [[UIBarButtonItem alloc] initWithTitle"Register" style:UIBarButtonItemStylePlain target:self actionselector(onRegisterTapped)]; self.navigationItem.rightBarButtonItem = anotherButton;
LAContext *context = [[LAContext alloc] init];
NSError *error = nil; if ([context canEvaluatePolicyAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error]) { [context evaluatePolicyAPolicyDeviceOwnerAuthenticationWithBiometrics 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];
} }



Best Answer-推荐答案


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

为此,请使用:

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

关于ios - 如何提高登录验证的速度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27278338/






欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://ogeek.cn/) Powered by Discuz! X3.4