我一直在努力将Touch ID支持集成到我正在处理的应用程序中.然而,它表现得非常不一致.我看到的一个常见问题是在新的应用程序启动它按预期工作,但随后在应用程序的背景,并将其带到前台我收到一个错误
evaluatePolicy:localizedReason:reply:
Run Code Online (Sandbox Code Playgroud)
它甚至没有多大意义(我从未看到过触摸警报)
Error Domain=com.apple.LocalAuthentication Code=-1004 "User interaction is required." UserInfo=0x171470a00 {NSLocalizedDescription=User interaction is required.}
Run Code Online (Sandbox Code Playgroud)
我已经尝试在应用程序已经运行时显示touchid警报,当它刚刚被预先考虑时,似乎并不重要.在最初的应用程序启动后,每次都会破坏它.
其他人遇到这个?
作为参考,这是我正在使用的代码:
if (_useTouchId && [LAContext class]) {
LAContext *myContext = [[LAContext alloc] init];
NSError *authError = nil;
if ([myContext canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&authError]) {
_didPresentTouchId = YES;
[myContext evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:@"Use your Touch ID to open *****" reply:^(BOOL success, NSError *error) {
dispatch_async(dispatch_get_main_queue(), ^ {
if (success) {
_isClosing = YES;
[self hide];
if (_successBlock) {
_successBlock();
}
}
else if (error && error.code != …Run Code Online (Sandbox Code Playgroud)