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); }
指纹识别登陆就是这么简单。虽然本人尚未在项目中使用这个功能,但是在我实际开发过程中遇到过机器注册大量刷单的情况,个人觉得在账号密码登录之后需要指纹识别登陆,能有效防止机器刷单。
作者:Funny_艺术家
链接:https://www.jianshu.com/p/6f3d1f7c2c6d