iOS8 苹果开放了指纹验证功能,支持5s以上的机型。
1.导入框架
#import <LocalAuthentication/LocalAuthentication.h>
2.定义几种可能性的block回调
typedef void (^SuccessVerifyBlock) (BOOL success);//验证成功
typedef void (^ErrorBlock) (NSError *error);//验证失败
typedef void (^InputPwdBlock)(NSError *error);//验证失败输入密码
typedef void (^DeviceNoSupportBlock)();//设备不支持
3.编码
+ (void)verifyFingerPrintWithSuccessBlock:(SuccessVerifyBlock)block WithErrorBlock:(ErrorBlock)errorBlock WithInputPwdBlock:(InputPwdBlock)inputPwdBlock WithDeviceNoSupportBlock:(DeviceNoSupportBlock)deviceNoSupportBlock {
LAContext *ctx = [[LAContext alloc]init];
// 判断设备是否支持指纹识别
if ([ctx canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:NULL]) {
// 输入指纹 - 回调是异步的
[ctx evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:DetailDescription reply:^(BOOL success, NSError *error) {
// 1. 如果输入成功
if (success) {
//成功
dispatch_async(dispatch_get_main_queue(), ^{
//验证成功回调
block(success);
});
} else {
//指纹验证失败会弹出框,是否使用密码验证。
// 判断错误类型是否是主动自行输入密码
if (error.code == LAErrorUserFallback) {
dispatch_async(dispatch_get_main_queue(), ^{
//密码验证方法
inputPwdBlock(error);
//跳转到登录页面登录
});
} else {
dispatch_async(dispatch_get_main_queue(), ^{
//指纹验证没有通过,没有点击用密码验证弹出框
errorBlock(error);
});
}
}
}];
} else {
//设备不支持指纹识别
deviceNoSupportBlock();
}
}