iOS 8 SDK向开发者公开了Touch ID指纹识别功能,允许App对用户身份进行本地验证。使用Touch ID非常简单,只需要2步即可:
- 检查Touch ID是否可用。
- 获得指纹验证结果。
首先需要添加LocalAuthentication.framework库,注意只有真机才有这个库,模拟器没有。
#import <LocalAuthentication/LocalAuthentication.h>
LAContext *ctx = [[LAContext alloc] init];
NSError *error = nil;
NSString *myLocalizedReasonString = @"请输入指纹";
// 判断设备是否支持指纹识别
if ([ctx canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error]) {
NSLog(@"支持");
//提示:指纹识别只是判断当前用户是否是手机的主人!
[ctx evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:myLocalizedReasonString reply:^(BOOL success, NSError *error) {
error = error;
NSLog(@"%d %@", success, error);
if (success) {
// 登录成功
NSLog(@"登陆成功");
}else{
NSLog(@"%@",error.localizedDescription);
switch (error.code) {
case LAErrorSystemCancel:
{
NSLog(@"Authentication was cancelled by the system");
//切换到其他APP,系统取消验证Touch ID
break;
}
case LAErrorUserCancel:
{
NSLog(@"Authentication was cancelled by the user");
//用户取消验证Touch ID
break;
}
case LAErrorUserFallback:
{
NSLog(@"User selected to enter custom password");
[[NSOperationQueue mainQueue] addOperationWithBlock:^{
//用户选择输入密码,切换主线程处理
}];
break;
}
default:
{
[[NSOperationQueue mainQueue] addOperationWithBlock:^{
//其他情况,切换主线程处理
}];
break;
}
}
}
}];
} else {
NSLog(@"不支持");
//不支持指纹识别,LOG出错误详情
switch (error.code) {
case LAErrorTouchIDNotEnrolled:
{
NSLog(@"TouchID is not enrolled");
break;
}
case LAErrorPasscodeNotSet:
{
NSLog(@"A passcode has not been set");
break;
}
default:
{
NSLog(@"TouchID not available");
break;
}
}
NSLog(@"%@",error.localizedDescription);
}
指纹识别登陆就是这么简单。虽然本人尚未在项目中使用这个功能,但是在我实际开发过程中遇到过机器注册大量刷单的情况,个人觉得在账号密码登录之后需要指纹识别登陆,能有效防止机器刷单。
网友评论