
1.首先导入头文件
#import <LocalAuthentication/LocalAuthentication.h>
2.关键代码
- (void)validateTouchID {
LAContext *context = [[LAContext alloc] init];
NSError *error;
NSString *tip = @"通过Home键验证已有手机指纹";
// 判断手机是否有指纹
if ([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error]) {
[context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:tip reply:^(BOOL success, NSError *error) {
if (success) {
// 验证成功
NSLog(@"success");
} else {
NSLog(@"%@",error.description);
switch (error.code) {
case LAErrorSystemCancel:
NSLog(@"系统取消授权");
break;
case LAErrorUserCancel:
NSLog(@"用户取消");
break;
case LAErrorUserFallback:
NSLog(@"用户输入密码");
break;
default:
break;
}
}
}];
} else {
NSLog(@"不支持指纹识别,%@",error.description);
}
}
3.LAError枚举相关解释
typedef NS_ENUM(NSInteger, LAError) {
/// 认证不成功,因为用户没有提供有效的凭据
LAErrorAuthenticationFailed = kLAErrorAuthenticationFailed,
/// 被用户取消验证(例如:“取消”按钮)。
LAErrorUserCancel = kLAErrorUserCancel,
/// 认证被取消了,因为用户点击回退按钮(输入密码)。
LAErrorUserFallback = kLAErrorUserFallback,
/// 通过系统(例如另一个应用程序的应用程序)被取消验证。
LAErrorSystemCancel = kLAErrorSystemCancel,
/// 认证无法启动,因为密码没有设置在设备。
LAErrorPasscodeNotSet = kLAErrorPasscodeNotSet,
/// 无法启动验证,因为在设备上不提供触摸标识。
LAErrorTouchIDNotAvailable = kLAErrorTouchIDNotAvailable,
/// 无法启动验证,因为触摸标识没有注册手指。
LAErrorTouchIDNotEnrolled = kLAErrorTouchIDNotEnrolled,
} NS_ENUM_AVAILABLE(10_10, 8_0);
4.效果图

如果你不是在wb145230博客园看到本文,请点击查看原文.