越来的多的项目使用了Face ID(面部识别)和Touch ID(指纹识别),不得不说确实很方便。最近整理了一下完整的使用方法,放在下面。
运行效果 :
识别中效果
下面是代码实现
步骤一,
首先我们需要引入头文件#import <LocalAuthentication/LocalAuthentication.h>,这个框架里封装了我们需要的生物识别模块。
#import <LocalAuthentication/LocalAuthentication.h>
步骤二,
判断设备是否支持Face ID(面部识别)和Touch ID(指纹识别)
//创建LAContext
LAContext *context = [[LAContext alloc] init];
//验证失败之后的弹出框的选项
context.localizedFallbackTitle = @"账号密码登陆";
NSError*error =nil;
//是否支持Face ID或Touch ID
BOOL canUseFaceOrTouchID = [context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error];
步骤三,
进行识别及识别成功和失败操作
//创建LAContext
LAContext *context = [[LAContext alloc] init];
//验证失败之后的弹出框的选项
context.localizedFallbackTitle = @"账号密码登陆";
NSError*error =nil;
//是否支持Face ID或Touch ID
BOOL canUseFaceOrTouchID = [context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error];
if(canUseFaceOrTouchID) {
//开始验证,会有弹出框出来
//localizedReason为验证失败时提示语
[context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:@"验证失败!不是本人?" reply:^(BOOL success, NSError * _Nullable error) {
if(success) {
dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"生物识别成功");
//这里执行你的下一步操作
});
}else{
NSLog(@"生物识别失败");
//下面是各种失败的原因,在这里可以进行失败时不同的操作
switch(error.code) {
caseLAErrorSystemCancel: {
NSLog(@"系统取消授权,如其他APP切入");
break;
}
caseLAErrorUserCancel: {
NSLog(@"用户取消验证Face ID");
break;
}
case LAErrorAuthenticationFailed: {
NSLog(@"授权失败");
break;
}
caseLAErrorPasscodeNotSet: {
NSLog(@"系统未设置密码");
break;
}
case LAErrorBiometryNotAvailable: {
NSLog(@"设备Face ID不可用,例如未打开");
break;
}
case LAErrorBiometryNotEnrolled: {
NSLog(@"设备Face ID不可用,用户未录入");
break;
}
case LAErrorUserFallback: {
NSLog(@"用户选择输入密码,切换主线程处理");
break;
}
default: {
NSLog(@"其他情况");
break;
}
}
}
}];
}else{
NSLog(@"不支持Face ID或Touch ID");
switch(error.code) {
case LAErrorBiometryNotEnrolled: {
NSLog(@"Face ID未注册");
break;
}
case LAErrorPasscodeNotSet: {
NSLog(@"未设置密码");
break;
}
default: {
NSLog(@"Face ID不可用");
break;
}
}
NSLog(@"%@",error.localizedDescription);
}
重要提醒:这时,你运行程序,系统较低的手机可以正常识别。但是使用较新的系统时,会有闪退现象,不要着急,你是不是忘记了iOS的隐私政策。查看一下你的plist文件里是否加了Face ID没加的话,加上即可。
至此,恭喜你学会了iOS系统中 Face ID(面部识别)和Touch ID(指纹识别)技术的使用!