首先:注意@import LocalAuthentication
//判断指纹解锁是否可用
- (void)canEvaluatePolicy
{
if ([[[UIDevice currentDevice] systemVersion]floatValue] >=8) {
LAContext *context = [[LAContext alloc] init];
__block NSString *msg;
NSError *error;
BOOL success;
// test if we can evaluate the policy, this test will tell us if Touch ID is available and enrolled
success = [context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error];
if (success) {
msg =[NSString stringWithFormat:NSLocalizedString(@"TOUCH_ID_IS_AVAILABLE",nil)];
} else {
msg =[NSString stringWithFormat:NSLocalizedString(@"TOUCH_ID_IS_NOT_AVAILABLE",nil)];
}
[selfShowV3Msg:msg];
}
}
//指纹解锁结果
- (void)evaluatePolicy
{
if ([[[UIDevice currentDevice] systemVersion]floatValue] >=8){
LAContext *context = [[LAContext alloc] init];
context.localizedFallbackTitle=@"";//去掉输入密码按钮只保存取消按钮
__block NSString *msg;
// show the authentication UI with our reason string
[context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:NSLocalizedString(@"提现前请先验证手势密码",nil) reply:
^(BOOL success,NSError *authenticationError) {
if (success) {
msg =[NSString stringWithFormat:NSLocalizedString(@"验证成功",nil)];
NSLog(@"----验证成功");
} else {
msg = [NSString stringWithFormat:NSLocalizedString(@"验证失败",nil), authenticationError.localizedDescription];
NSLog(@"----验证失败");
}
[self printResult:msg];
}];
}
}
- (void)printResult:(NSString*)msg
{
//异步调用,将结果更新到主线程(PS:不写dispatch_async(dispatch_get_main_queue直接[self ShowV3Msg:msg]的话会延迟且卡)
dispatch_async(dispatch_get_main_queue(), ^{
// update the result in the main queue because we may be calling from asynchronous block
[selfShowV3Msg:msg];
});
}