判断是否开着密码锁
NSString *touch = [[NSUserDefaults standardUserDefaults]objectForKey:@"ISTouch"];
if ([touch isEqualToString:@"ON"]) {
ViewController *VC = [[ViewController alloc]init];
QMUINavigationController *nav = [[QMUINavigationController alloc]initWithRootViewController:VC];
self.window.rootViewController = nav;
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
}else{
HomeViewController *VC = [[HomeViewController alloc]init];
QMUINavigationController *nav = [[QMUINavigationController alloc]initWithRootViewController:VC];
self.window.rootViewController = nav;
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
}
``
-
(void)clicktouch{
LAContext* context = [[LAContext alloc] init];
//这个设置的使用密码的字体,当text=@""时,按钮将被隐藏
context.localizedFallbackTitle= @"输入密码解锁";//这个设置的取消按钮的内容
if (@available(iOS 10.0, )) {
context.localizedCancelTitle = @"取消";
} else {
// Fallback on earlier versions
}
//错误对象
NSError error = nil;
NSString* result = @"需要验证您的touch ID";
//首先使用canEvaluatePolicy 判断设备支持状态
if ([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics
error:&error]) {
NSLog(@"支持指纹识别");
[context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics
localizedReason:result reply:^(BOOL success, NSError * _Nullable error) {
if (success) {
NSLog(@"验证成功 刷新主界面");
// [SVProgressHUD showSuccessWithStatus:@"验证成功"];
// [SVProgressHUD dismissWithDelay:1.5];
// 主线程跳转 一定要在主线程 因为这个环节很慢
dispatch_async(dispatch_get_main_queue(), ^{[self pushtoHome]; }); }else{ NSLog(@"%@",error.localizedDescription); switch (error.code) { case LAErrorSystemCancel: { NSLog(@"系统取消授权,如其他APP切入"); break; } case LAErrorUserCancel: { NSLog(@"用户取消验证Touch ID"); break; } case LAErrorAuthenticationFailed: { NSLog(@"授权失败"); break; } case LAErrorPasscodeNotSet: { NSLog(@"系统未设置密码"); break; } case LAErrorTouchIDNotAvailable: { NSLog(@"设备Touch ID不可用,例如未打开"); break; } case LAErrorTouchIDNotEnrolled: { NSLog(@"设备Touch ID不可用,用户未录入"); break; } case LAErrorUserFallback: { [[NSOperationQueue mainQueue] addOperationWithBlock:^{ NSLog(@"用户选择输入密码,切换主线程处理"); [self clickPwd]; }]; break; } default: { [[NSOperationQueue mainQueue] addOperationWithBlock:^{ NSLog(@"其他情况,切换主线程处理"); }]; break; } } } }];
}else{
NSLog(@"不支持指纹识别");
switch (error.code) {
case LAErrorTouchIDNotEnrolled:
{
NSLog(@"TouchID is not enrolled");
break;
}
case LAErrorPasscodeNotSet:
{
NSLog(@"A passcode has not been set");
break;
}
default:
{
NSLog(@"TouchID not available");
break;
}
}NSLog(@"%@",error.localizedDescription);
}
}
网友评论