When trying to use TouchID on my app, it hangs for a long time, and then will sometimes crash, and sometimes finally pass. I have never tried anything with Touch ID, so it's all very much new to me. My code is:
-(IBAction)touchID {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *student = [defaults objectForKey:@"firstName"];
NSString *usingTouch = [defaults objectForKey:@"useTouchID"];
if ([usingTouch isEqualToString:@"Yes"]) {
[passwordfield removeFromSuperview];
LAContext *context = [[LAContext alloc] init];
NSError *error = nil;
if ([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error]) {
[context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics
localizedReason:@"Are you the device owner?"
reply:^(BOOL success, NSError *error) {
if (error) {
NSLog(@"%@", error);
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error"
message:@"There was a problem verifying your identity."
delegate:nil
cancelButtonTitle:@"Ok"
otherButtonTitles:nil];
[alert show];
return;
}
else if (success) {
NSString *nope = @"Yes";
[defaults setObject:nope forKey:@"firstName"];
[defaults synchronize];
[self updatetheview];
} else {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error"
message:@"You are not the device owner."
delegate:nil
cancelButtonTitle:@"Ok"
otherButtonTitles:nil];
[alert show];
}
}];
} else {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error"
message:@"Your device cannot authenticate using TouchID."
delegate:nil
cancelButtonTitle:@"Ok"
otherButtonTitles:nil];
[alert show];
}
//Perform Touch ID Code
}
}
The Console shows this over and over again before finally acting as you would expect it to immediately:
Stack:( 0 CoreFoundation 0x000000018359cf60 + 148 1 libobjc.A.dylib 0x0000000198a47f80 objc_exception_throw + 56 2 CoreFoundation 0x000000018359ce90 + 0 3 Foundation 0x00000001845bb2d8 + 88 4 Foundation 0x0000000184441a1c + 56 5 Foundation 0x000000018443d5dc + 260 6 UIKit 0x0000000188c378c4 + 64 7 UIKit 0x0000000188b2aa78 + 240 8 UIKit 0x0000000188b2a32c + 116 9 UIKit 0x0000000188b2a1b8 + 504 10 UIKit 0x0000000188e3c834 + 228 11 UIKit 0x0000000188b28bf8 + 412 12 Fritch 0x0000000100186f40 -[DirectoryViewController updatetheview] + 180 13 Fritch 0x0000000100186cac __34-[DirectoryViewController touchID]_block_invoke + 316 14 LocalAuthentication 0x000000018599ee28 + 72 15 LocalAuthentication 0x000000018599e7e4 + 256 16 LocalAuthentication 0x000000018599b004 + 324 17 LocalAuthentication 0x000000018599b168 + 128 18 CoreFoundation 0x00000001835a2a70 + 144 19 CoreFoundation 0x00000001834a04d4 + 284 20 Foundation 0x00000001845c5b4c + 20 21 Foundation 0x00000001845c5940 + 796 22 Foundation 0x00000001845c79c8 + 292 23 libxpc.dylib 0x00000001994a0c80 + 28 24 libxpc.dylib 0x00000001994a0c24 + 40 25 libdispatch.dylib 0x000000010051dc68 _dispatch_client_callout + 16 26 libdispatch.dylib 0x000000010052a780 _dispatch_queue_drain + 1036 27 libdispatch.dylib 0x0000000100521958 _dispatch_queue_invoke + 464 28 libdispatch.dylib 0x000000010051dc68 _dispatch_client_callout + 16 29 libdispatch.dylib 0x000000010052cec8 _dispatch_root_queue_drain + 2344 30 libdispatch.dylib 0x000000010052c590 _dispatch_worker_thread3 + 132 31 libsystem_pthread.dylib 0x000000019946d470 _pthread_wqthread + 1092 32 libsystem_pthread.dylib 0x000000019946d020 start_wqthread + 4 )