实用知识:指纹识别功能的实现
2016-05-22 13:35
441 查看
#import "ViewController.h" // iPhone5S开始, 6S第二代, 指纹识别验证 YES/NO // 授权验证, 指纹识别框架 #import <LocalAuthentication/LocalAuthentication.h> @interface ViewController () // 指纹识别 @property (strong, nonatomic) LAContext *context; @end @implementation ViewController - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event { // 弹出指纹验证 self.context = [[LAContext alloc] init]; // 判断硬件是否支持 /** LAPolicyDeviceOwnerAuthenticationWithBiometrics NS_ENUM_AVAILABLE(NA, 8_0) = kLAPolicyDeviceOwnerAuthenticationWithBiometrics, // 指纹识别, 5次失败上锁 LAPolicyDeviceOwnerAuthentication NS_ENUM_AVAILABLE(10_11, 9_0) = kLAPolicyDeviceOwnerAuthentication // 指纹识别, 6次失败上锁 */ NSError *error; // 判断设备是否可以使用指纹识别 BOOL isAuthentication = [self.context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error]; if (isAuthentication == NO || error) { NSLog(@"不能使用: %@", error); return; } /** 请求进行指纹识别 localizedReason: 告诉用户使用指纹识别的目的 */ NSString *reason = @"使用指纹进行用户登陆"; [self.context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:reason reply:^(BOOL success, NSError * _Nullable error) { /** // 指纹验证失败 LAErrorAuthenticationFailed = kLAErrorAuthenticationFailed, // 用户取消, 点击了取消按钮 LAErrorUserCancel = kLAErrorUserCancel, // 用户取消, 点出了输入密码 LAErrorUserFallback = kLAErrorUserFallback, // 系统取消, (比如App进入后台) LAErrorSystemCancel = kLAErrorSystemCancel, // 不能开始指纹验证, 设备没有设置密码 LAErrorPasscodeNotSet = kLAErrorPasscodeNotSet, // 不能开始指纹验证, Touch ID 不能用 LAErrorTouchIDNotAvailable = kLAErrorTouchIDNotAvailable, // 不能开始指纹验证, Touch ID 没有录入指纹 LAErrorTouchIDNotEnrolled = kLAErrorTouchIDNotEnrolled, // 指纹验证失败, 太多次的验证失败导致 // TouchID 锁住了, 需要输入密码 LAErrorTouchIDLockout NS_ENUM_AVAILABLE(10_11, 9_0) = kLAErrorTouchIDLockout, // App 取消了指纹验证 LAErrorAppCancel NS_ENUM_AVAILABLE(10_11, 9_0) = kLAErrorAppCancel, /// LAContext passed to this call has been previously invalidated. LAErrorInvalidContext NS_ENUM_AVAILABLE(10_11, 9_0) = kLAErrorInvalidContext */ if (error) { switch (error.code) { case LAErrorAuthenticationFailed: NSLog(@"指纹验证失败"); break; case LAErrorUserCancel: NSLog(@"用户取消了指纹验证"); break; case LAErrorSystemCancel: NSLog(@"系统取消了指纹验证"); break; default: break; } } // 结果回调 if (success) { NSLog(@"验证成功"); // 执行相关的功能代码 } }]; } @end
相关文章推荐
- Linus
- 点-园-圆柱类族的设计
- 数据结构—各类‘排序算法’实现(上)
- 课程练习三-1007-problem G
- Redis
- 电话面试一
- 线程资料整理
- 如何退出一个app
- 微信公众号接入
- 【LeetCode】92. Reverse Linked List II
- CodeForces 96AFootball
- 一个控件例子
- OpenCV代码提取:遍历指定目录下指定文件的实现
- OpenCV代码提取:遍历指定目录下指定文件的实现
- java.lang.IllegalStateException: Cannot forward after response has been committed
- DNS(BIND) 视图的简单应用
- 2698:八皇后问题
- CodeForces 84AToy Army
- more命令详解
- 如何导入jstl标签