【发布时间】:2018-01-16 10:22:55
【问题描述】:
我想知道如何检查 Touch ID 的状态。 详细信息:如果触摸 ID 失败超过 3 次,则触摸 ID 被禁用。要激活,我必须在锁定屏幕上输入密码或按 ID 菜单上的密码。我怎么知道touch id的状态是able还是disable?
【问题讨论】:
标签: ios objective-c touch-id
我想知道如何检查 Touch ID 的状态。 详细信息:如果触摸 ID 失败超过 3 次,则触摸 ID 被禁用。要激活,我必须在锁定屏幕上输入密码或按 ID 菜单上的密码。我怎么知道touch id的状态是able还是disable?
【问题讨论】:
标签: ios objective-c touch-id
// Create LA Context
LAContext *myContext = [[LAContext alloc] init];
NSError *authError = nil;
NSString *myLocalizedReasonString = @"Specify why you need TouchID";
// Policy evalivation - start
if ([myContext canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&authError]) {
[myContext evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics
localizedReason:myLocalizedReasonString
// Reply block - start
reply:^(BOOL success, NSError *error) {
// success - start
if (success) {
NSLog(@"User authenticated successfully, take appropriate action");
double delayInSeconds = 0.1;
dispatch_time_t replaceTab = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);
dispatch_after(replaceTab, dispatch_get_main_queue(), ^(void){
[self touchIDSuccess];
});
// success - end
// Not successful - start
} else {
// error != NULL - start
if(error != NULL)
{
// switch - start
switch (error.code){
case LAErrorUserCancel:
NSLog(@"LAErrorUserCancel");
break;
case LAErrorUserFallback:
NSLog(@"LAErrorUserFallback");
break;
case LAErrorAppCancel:
NSLog(@"LAErrorAppCancel");
break;
case LAErrorAuthenticationFailed:
NSLog(@"kLAErrorAuthenticationFailed");
default:
break;
}// switch - end
}// error != NULL - end
}// Not success - end
}];// Reply block - end
} else {
// Touch ID was previously used but now Could not evaluate policy , may be because user removed the fingerprint
NSLog(@"Could not evaluate policy");
}
【讨论】: