您的位置:首页 > 其它

TouchID 指纹登录

2016-10-24 15:14 253 查看
注:接入指纹验证之前确保您的设备是否支持 TouchID 功能并能正常使用的设备(iPhone 5s 及以上)。

#import "ViewController.h"
#import <LocalAuthentication/LocalAuthentication.h>   //需要导入这个库文件

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {

[super viewDidLoad];

if ([[self.navigationController.viewControllers firstObject] isEqual:self]) {
self.navigationItem.title = @"点击调用指纹识别";
}
}

- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {

[self touch];
}

- (void)touch {

if ([[self.navigationController.viewControllers firstObject] isEqual:self]) {
self.navigationItem.title = @"指纹验证";

//定义一个alter按钮
LAContext *context = [LAContext new]; //这个属性是设置指纹输入失败之后的弹出框的选项
context.localizedFallbackTitle = @"输入密码"; // 按钮的标题
NSError *error = nil;

//判断用户的手机是否支持指纹
if ([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics
error:&error]) {

NSLog(@"支持指纹识别");

[context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics
localizedReason:@"指纹登录"
reply:^(BOOL success, NSError * _Nullable error) {
//这里是指纹验证之后返回信息
//只返回 success 值为 TRUE 或 FALSE
if (success) {

NSLog(@"验证成功 你可以登录了 Go Go");
} 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(@"用户选择输入密码,切换主线程处理");
}];
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);
}
}

}

- (void)didReceiveMemoryWarning {

[super didReceiveMemoryWarning];
}

@end


项目源码请点击这里
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息