TouchID 指纹解锁
2018-02-19 21:37
267 查看
概述
TouchID 指纹解锁
详细
代码下载:http://www.demodashi.com/demo/10701.html
一、软硬件支持
指纹验证功能的最低硬件支持为iPhone5s, iPad 6,iPad mini 3这些有touch ID硬件支持的设备,并且操作系统最低为iOS8.0,因为touch ID是在iOS8.0之后才开放的一类api,实现了指纹验证的功能。
二、程序实现
指纹解锁该功能实现起来是很简单的,因为苹果都已经帮我们封装好了,只需要实现几个方法就可以了。实现流程:
step1: 引入依赖框架(指纹解锁必须的头文件):
#import <LocalAuthentication/LocalAuthentication.h>
step2: 指纹验证的实现的两个主要方法:
这个方法是判断设备是否支持TouchID的。
- (BOOL)canEvaluatePolicy:(LAPolicy)policy error:(NSError * __autoreleasing *) error __attribute__((swift_error(none)));
这个是用来验证TouchID的,会有弹出框出来。
- (void)evaluatePolicy:(LAPolicy)policy localizedReason:(NSString *)localizedReason reply:(void(^)(BOOL success, NSError * __nullable error))reply;
step3: 主要回调方法:
typedef NS_ENUM(NSInteger, LAError) { // 授权失败 LAErrorAuthenticationFailed = kLAErrorAuthenticationFailed, // 用户取消Touch ID授权 LAErrorUserCancel = kLAErrorUserCancel, // 用户选择输入密码 LAErrorUserFallback = kLAErrorUserFallback, // 系统取消授权(例如其他APP切入) LAErrorSystemCancel = kLAErrorSystemCancel, // 系统未设置密码 LAErrorPasscodeNotSet = kLAErrorPasscodeNotSet, // 设备Touch ID不可用,例如未打开 LAErrorTouchIDNotAvailable = kLAErrorTouchIDNotAvailable, // 设备Touch ID不可用,例如未打开 LAErrorTouchIDNotEnrolled = kLAErrorTouchIDNotEnrolled, // 触摸ID现在锁定 验证是不成功的,因为有太多的失败的尝试和触摸ID LAErrorTouchIDLockout NS_ENUM_AVAILABLE(10_11, 9_0) __WATCHOS_AVAILABLE(3.0) __TVOS_AVAILABLE(10.0) = kLAErrorTouchIDLockout, // 认证被取消的应用(如无效而认证进行调用)。 LAErrorAppCancel NS_ENUM_AVAILABLE(10_11, 9_0) = kLAErrorAppCancel, /// LAContext passed to this call has been previously invalidated. // LAContext通过这个电话已经失效 LAErrorInvalidContext NS_ENUM_AVAILABLE(10_11, 9_0) = kLAErrorInvalidContext }
验证指纹:
- (void)authenticateUser { //创建LAContext LAContext *context = [[LAContext alloc] init]; // 这个属性是设置指纹输入失败之后的弹出框的选项 context.localizedFallbackTitle = @"请输入密码"; NSError *error = nil; if ([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error]) { NSLog(@"支持指纹识别"); // localizedReason: 用于设置提示语,表示为什么要使用Touch ID [context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:@"请按home键指纹解锁" reply:^(BOOL success, NSError * _Nullable error) { if (success) { dispatch_sync(dispatch_get_main_queue(), ^{ // Update UI in UI thread here NSLog(@"验证成功 刷新主界面"); }); }else{ NSLog(@"%@",error.localizedDescription); switch (error.code) { case LAErrorSystemCancel: { NSLog(@"系统取消授权,如其他APP切入"); break; } case LAErrorUserCancel: { NSLog(@"用户取消验证Touch ID"); break; } case LAErrorAuthenticationFailed: { NSLog(@"授权失败"); break; } case LAErrorPasscodeNotSet: { NSLog(@"系统未设置密码"); break; } case LAErrorTouchIDNotAvailable: { NSLog(@"设备Touch ID不可用,例如未打开"); break; } case LAErrorTouchIDNotEnrolled: { NSLog(@"设备Touch ID不可用,用户未录入"); break; } case LAErrorUserFallback: // 用于设置左边的按钮的名称,默认是Enter Password { [[NSOperationQueue mainQueue] addOperationWithBlock:^{ NSLog(@"用户选择输入密码,切换主线程处理"); }]; break; } default: { [[NSOperationQueue mainQueue] addOperationWithBlock:^{ NSLog(@"其他情况,切换主线程处理"); }]; break; } } } }]; }else{ NSLog(@"不支持指纹识别"); 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); } }
项目中若有了指纹解锁这种解锁方式, 瞬间有木有觉得自己的项目高大上了一丢丢呢。
三、压缩文件截图及运行效果
1、压缩文件的截图2、运行效果的截图
四、其他补充
界面性问题可以根据自己项目需求调整即可, 具体可参考代码, 项目能够直接运行!
注:本文著作权归作者,由demo大师(http://www.demodashi.com)宣传,拒绝转载,转载需要作者授权
相关文章推荐
- iOS 指纹解锁验证TouchID功能
- iOS开发 手势密码解锁和指纹TouchID解锁
- iOS 指纹解锁 验证TouchID
- 简单实现iOS指纹解锁(TouchID)
- iOS开发实现TouchID指纹解锁
- iOS开发实现TouchID指纹解锁
- iOS开发实现TouchID指纹解锁
- TouchID 指纹解锁
- 指纹解锁---去掉输入密码
- 三年过去了,小米为何还不指纹解锁?
- iOS指纹识别(解锁)
- Android添加指纹解锁功能的实现代码
- 细思极恐!带指纹解锁的手机更安全吗?
- iOS手势解锁、指纹解锁--Swift代码
- Android指纹解锁示例代码
- Android 指纹解锁和MD5加密密码
- iOS指纹解锁,几行代码解决,特简单
- iOS_使用LAContext实现TouchID(指纹识别)的使用
- iPhone人脸解锁PK vivo屏下指纹,谁才是2018手机圈主流?
- 论坛源码推荐(6月10日):iOS 8指纹解锁 用Swift语言编写的JokeClient和FanFan