1. 引入库
#import <LocalAuthentication/LocalAuthentication.h>
2. 实例化对象
LAContext *context = [[LAContext alloc] init];
NSError *error = nil;
context.localizedFallbackTitle = @"手动输入密码"; // 验证失败时,会多提供一个按钮,一般用于提供手动输入的接口
context.maxBiometryFailures = @10; // 验证失败的最大次数,但不超过5次
3. 判断指纹识别是否可用
if ([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error]) {
[self evaluateWithTouchID:context];
} else {
switch (error.code) {
case LAErrorTouchIDNotAvailable: // 设备本身不支持,如iphone5等
break;
case LAErrorTouchIDNotEnrolled: // 没有设置指纹密码
break;
case LAErrorPasscodeNotSet: // Touch ID功能处于被禁用状态
break;
}
}
4. 调用系统方法进行指纹识别
- (void)evaluateWithTouchID:(LAContext *)context {
__block NSString *message = nil;
[context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics
localizedReason:@"为了您信息的安全,请验证指纹"
reply:^(BOOL success, NSError *error) {
if (success) {
message = @"成功";
} else if (error.code == LAErrorUserCancel) {
message = @"取消";
} else if (error.code == LAErrorUserFallback) {
message = @"手动输入密码";
// 可以在此弹出手动密码输入界面
} else if (error.code == LAErrorAuthenticationFailed) {
message = @"指纹不匹配";
} else if (error.code == LAErrorSystemCancel) {
message = @"系统取消";
}
dispatch_async(dispatch_get_main_queue(), ^{
[[[UIAlertView alloc] initWithTitle:@"提示"
message:message
delegate:nil
cancelButtonTitle:@"cacle"
otherButtonTitles:nil] show];
});
}];
}