//
// ViewController.m
// TouchID指纹验证
//
// Created by apple on 16/9/18.
// Copyright © 2016年 apple. All rights reserved.
//
#import "ViewController.h"
#import "HomeViewController.h"//跳转成功后需要跳转到的视图控制器
#import <LocalAuthentication/LocalAuthentication.h>//导入TouchID需要的类库
#import <sys/utsname.h> //获取设备基本信息需要的类库
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
[self touchID];
}
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
//调用TouchID会执行此方法,有需要可以实现一些另外的功能
}
- (void)touchID {
LAContext *context = [[LAContext alloc] init];
NSError *error = nil;
// 第一步判断是否支持Touch ID 或者 本机是否已经录入指纹
if ([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error]) {
[context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:@"请验证已有指纹" reply:^(BOOL success, NSError * _Nullable error) {
if (error) {
NSLog(@"验证失败"); // 系统会自动给错误提示
}else{
dispatch_async(dispatch_get_main_queue(), ^{
// 指纹验证成功后跳转
HomeViewController *home = [[HomeViewController alloc] init];
[self presentViewController:home animated:YES completion:nil];
});
}
}];
}else {
// 判断是否真机运行
if (self.isSimulator) {
[[[UIAlertView alloc] initWithTitle:@"提示" message:@"请用真机测试~" delegate:nil cancelButtonTitle:@"好的" otherButtonTitles:nil, nil] show];
}else{
[[[UIAlertView alloc] initWithTitle:@"提示" message:@"不支持Touch ID~" delegate:nil cancelButtonTitle:@"好的" otherButtonTitles:nil, nil] show];
}
}
}
// 判断当前设备是否支持TouchID功能
- (BOOL)isSimulator{
struct utsname systemInfo;
uname(&systemInfo);
NSString *deviceMachine = [NSString stringWithCString:systemInfo.machine encoding:NSUTF8StringEncoding];
if ([deviceMachine isEqualToString:@"i386"] || [deviceMachine isEqualToString:@"x86_64"]) {
return YES;
}
return NO;
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end