苹果手机支持Face ID和Touch ID进行用户身份验证,可以避免需要重复输入密码且安全的生物验证技术,使用方法也很简单。
1、导入需要使用到的库文件
#import<LocalAuthentication/LocalAuthentication.h>
2、判断是否可以使用该功能,方法如下
- (BOOL)canEvaluatePolicy:(LAPolicy)policy error:(NSError * __autoreleasing *)error
调用方法
LAContext *context = [[LAContext alloc] init];
BOOL canEvaluatePolicy = [context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error]
3、调用验证方法
- (void)evaluatePolicy:(LAPolicy)policy
localizedReason:(NSString *)localizedReason
reply:(void(^)(BOOL success, NSError * __nullable error))reply
//支持 localizedReason为alert弹框的message内容
[context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:@"请验证已有指纹" reply:^(BOOL success, NSError * _Nullable error) {
if(success) {
NSLog(@"面容/指纹验证通过");
//在这里登录操作
}else{
NSLog(@"验证失败:%@",error.description);
switch(error.code) {
case LAErrorSystemCancel:
{
NSLog(@"系统取消授权,如其他APP切入");
break;
}
case LAErrorUserCancel:
{
NSLog(@"用户取消验证Touch ID");
}
case LAErrorAuthenticationFailed:
{
NSLog(@"授权失败");
break;
}
case LAErrorPasscodeNotSet:
{
NSLog(@"系统未设置密码");
break;
}
case LAErrorBiometryNotAvailable:
{
NSLog(@"设备Touch ID不可用,例如未打开");
break;
}
case LAErrorBiometryNotEnrolled:
{
NSLog(@"设备Touch ID不可用,用户未录入");
break;
}
case LAErrorUserFallback:
{
[[NSOperationQueue mainQueue] addOperationWithBlock:^{
NSLog(@"用户选择输入密码,切换主线程处理");
}];
break;
}
default:
{
[[NSOperationQueue mainQueue] addOperationWithBlock:^{
NSLog(@"其他情况,切换主线程处理");
}];
break;
}
}
}
}];
}else{
LABiometryType type = context.biometryType;
NSLog(@"未设置面容/指纹: %ld", (long)type); // 无指纹/面容 0 指纹 1 面容 2
NSLog(@"error : %@",error.description);
}
网友评论