前言
指纹解锁是自苹果公司推出iPhone 5s后推出的,将加密做到官方化,为APP的保密性提供了高度的方便性.
正文
指纹解锁很简单,三步即可搞定
第一步 请求
请求当前设备是不是支持指纹解锁
LAContext *context = [LAContext new];
NSError *error = NULL;
__weak typeof(self) WS = self;
if ([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error]) {
// 进行第二步骤
} else {
if (resultBlock) {
resultBlock(NO, @"不支持指纹");
}
}
第二步 验证
这里需要知道的是,
iOS 9之前,指纹解锁只支持纯指纹解锁,
iOS 9之后,指纹解锁支持纯指纹解锁和指纹密码混合解锁两种方式
LAPolicy policy = LAPolicyDeviceOwnerAuthenticationWithBiometrics;
if (@available(iOS 9.0, *)) {
switch (fingerprintType) {
case FingerprintTool_OnlyFinger:
policy = LAPolicyDeviceOwnerAuthenticationWithBiometrics;
break;
case FingerprintTool_FingerAndPassword:
policy = LAPolicyDeviceOwnerAuthentication;
break;
}
} else {
NSLog(@"指纹和密码的解锁模式,只支持系统版本大于或者等于9.0");
}
[context evaluatePolicy:policy
localizedReason:localizedReason
reply:^(BOOL success, NSError * _Nullable error) {
// 第三步骤
}];
第三步 结果处理
结果处理,主要是处理成功和失败的情况,失败需要处理失败的原因(在你需要的话),失败基本上分为客观原因和人为原因(这里指的是人为取消)
if (resultBlock) {
NSString *resultString = [WS referenceError:error
fallbackString:fallbackString];
resultBlock(success, resultString);
}
#pragma mark 返回错误参考信息
+ (NSString *)referenceError:(NSError *)error fallbackString:(NSString *)fallbackString {
switch (error.code) {
case LAErrorAuthenticationFailed:
return @"授权失败";
break;
case LAErrorUserCancel:
return @"用户取消验证Touch ID";
break;
case LAErrorUserFallback:
return fallbackString;
break;
case LAErrorSystemCancel:
return @"系统取消授权,如其他APP切入";
break;
case LAErrorPasscodeNotSet:
return @"系统未设置密码";
break;
case LAErrorTouchIDNotAvailable:
return @"设备Touch ID不可用,例如未打开";
break;
case LAErrorTouchIDNotEnrolled:
return @"设备Touch ID不可用,用户未录入";
break;
case LAErrorTouchIDLockout:
return @"身份验证未成功,多次使用Touch ID失败";
break;
case LAErrorAppCancel:
return @"认证被取消的应用";
break;
case LAErrorInvalidContext:
return @"授权对象失效";
break;
case LAErrorNotInteractive:
return @"APP未完全启动,调用失败";
break;
default:
return @"验证成功";
break;
}
}
结语
最后附上demo,如果感觉对你有所帮助,小星星走起⭐️⭐️⭐️