2016-09-26 79 views
3

我有一个iPhone应用程序正在使用Touch ID的应用程序商店。如果启用了Touch ID,则用户通过身份验证,否则用户需要输入PIN才能登录应用程序。iPhone应用程序崩溃与错误[UIApplication _cachedSystemAnimationFenceCreatingIfNecessary:]

IOS 10.1发布后,当我检查崩溃报告时,崩溃计数增加了。从崩溃报告中,它指向[UIApplication _cachedSystemAnimationFenceCreatingIfNecessary:],当我在Xcode中打开该应用程序时,它将重点放在[self dismissViewControllerAnimated:YES completion:nil];上。

Crash Report

我写的代码如下:

-(void) showTouchIDAuthentication{ 

    LAContext *myContext = [[LAContext alloc] init]; 
    NSError *authError = nil; 
    NSString *myLocalizedReasonString = @"Authenticate using your finger to access My Account Menu."; 
    if ([myContext canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&authError]) { 
     [myContext evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics 
        localizedReason:myLocalizedReasonString 
          reply:^(BOOL success, NSError *error) { 
           if (success) { 
            NSLog(@"User is authenticated successfully"); 
            [self dismissViewControllerAnimated:YES completion:nil]; 
           } else { 
    }]; 
    } 

} 

当我在iPhone 6,IOS测试10,一切工作正常。不知道如何模拟这个问题。

任何人都可以请弄清楚,如果我失去了一些东西?请帮我解决这个崩溃问题。

回答

3

通常,完成处理程序不在主线程上运行。所有UI相关的东西必须在主线程上完成(包括解除视图控制器)。

我建议加上的解雇线主线程块这样的:

-(void) showTouchIDAuthentication{ 

LAContext *myContext = [[LAContext alloc] init]; 
NSError *authError = nil; 
NSString *myLocalizedReasonString = @"Authenticate using your finger to access My Account Menu."; 
if ([myContext canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&authError]) { 
    [myContext evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics 
       localizedReason:myLocalizedReasonString 
         reply:^(BOOL success, NSError *error) { 
          if (success) { 
           NSLog(@"User is authenticated successfully"); 

           [[NSOperationQueue mainQueue] addOperationWithBlock:^ { 
            [self dismissViewControllerAnimated:YES completion:nil]; 
           }]; 

          } else { 
    }]; 
    } 

} 
+1

我已经做了更改代码,按您的建议,并上传在商店中的应用。让我们看看一旦应用程序处于活动状态后,崩溃计数如何改变。 –

+1

谢谢你的帮助菲德尔...其实这是一个奇怪的问题,每当我测试,问题没有得到转载,一切工作正常。 –