支持系统和机型
iOS系统的指纹识别功能最低支持的机型为iPhone 5s,最低支持系统为iOS 8,虽然安装iOS 7系统的5s机型可以使用系统提供的指纹解锁功能,但由于API并未开放,所以理论上第三方软件不可使用。
依赖框架
在使用前我们需要导入 LocalAuthentication.framework 这个库
然后引入头文件
#import <LocalAuthentication/LocalAuthentication.h>
这个库必须要Xcode6并且连接的是真机,才不会提示找不到的错误。 如果是模拟器会提示找不到这个库。
OC代码
//验证是否支持TouchID
- (void)judgeCanTouchId
{
LAContext *context = [LAContext new];
NSError *error;
context.localizedFallbackTitle = @"输入密码";
if ([context canEvaluatePolicy:(LAPolicyDeviceOwnerAuthenticationWithBiometrics) error:&error])
{
NSLog(@"支持使用");
[context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:NSLocalizedString(@"通过验证指纹解锁",nil) reply:^(BOOL success, NSError * _Nullable error) {
if (success) {
NSLog(@"验证成功");
}
else
{
/*
// 用户未提供有效证书,(3次机会失败 --身份验证失败)。
LAErrorAuthenticationFailed = kLAErrorAuthenticationFailed,
// 认证被取消,(用户点击取消按钮)。
LAErrorUserCancel = kLAErrorUserCancel,
// 认证被取消,用户点击回退按钮(输入密码)。
LAErrorUserFallback = kLAErrorUserFallback,
// 身份验证被系统取消,(比如另一个应用程序去前台,切换到其他 APP)。
LAErrorSystemCancel = kLAErrorSystemCancel,
// 身份验证无法启动,因为密码在设备上没有设置。
LAErrorPasscodeNotSet = kLAErrorPasscodeNotSet,
// 身份验证无法启动,因为触摸ID在设备上不可用。
LAErrorTouchIDNotAvailable = kLAErrorTouchIDNotAvailable,
// 身份验证无法启动,因为没有登记的手指触摸ID。 没有设置指纹密码时。
LAErrorTouchIDNotEnrolled = kLAErrorTouchIDNotEnrolled,
**/
if (error.code == kLAErrorUserFallback) {
NSLog(@"用户选择了另一种方式");
}
else if (error.code == kLAErrorUserCancel)
{
NSLog(@"用户取消");
}
else if (error.code == kLAErrorSystemCancel)
{
NSLog(@"切换前台被取消");
}
else if (error.code == kLAErrorPasscodeNotSet)
{
NSLog(@"身份验证没有设置");
}
else
{
NSLog(@"验证失败");
}
}
}];
}
else
{
NSLog(@"不支持使用");
}
}
总结
Touch ID验证中我们并不能拿到标识,只有一个YES or NO的结果