概述

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)policylocalizedReason:(NSString *)localizedReasonreply:(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现在锁定 验证是不成功的,因为有太多的失败的尝试和触摸IDLAErrorTouchIDLockout   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 {//创建LAContextLAContext *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 hereNSLog(@"验证成功 刷新主界面");});}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)宣传,拒绝转载,转载需要作者授权

TouchID 指纹解锁相关推荐

  1. iOS开发实现TouchID指纹解锁

    iOS开发实现TouchID指纹解锁 一直想实现一下指纹解锁,苦于一直没时间,最近终于闲了下来所以翻了翻文档看了看demo,完成了这篇教程.本功能实现起来是很简单的,因为苹果都已经帮我们封装好了,只需 ...

  2. iOS 关于TouchID指纹解锁的实现

    转载请注明出处!!! 一直想玩玩指纹解锁,近期时间比较闲,就研究了一下这个指纹解锁.这个功能实现起来还是很简单的,虽然看起来比较高大上,但是对于开发来说,越是高大上的东西一般都有封装好的,我们只需要调 ...

  3. ios与android指纹识别,iOS开发实现TouchID指纹解锁

    一直想实现一下指纹解锁,苦于一直没时间,最近终于闲了下来所以翻了翻文档看了看demo,完成了这篇教程.本功能实现起来是很简单的,因为苹果都已经帮我们封装好了,只需要实现几个方法就可以了. 实现效果图 ...

  4. iOS 指纹解锁 验证TouchID

    iOS指纹解锁 1.首先,引入依赖框架 LocalAuthentication.framework #import <LocalAuthentication/LocalAuthenticatio ...

  5. iOS8.0 之后指纹解锁

    iOS 8.0 SDK 开放了调用指纹识别的API,但是仅限于支持5s 以后的机型 使用的话,很简单,要导入系统的库 #import <LocalAuthentication/LocalAuth ...

  6. iOS指纹解锁和手势解锁

    前言 一直想写博客来着,一来可以记录一些自己学习和研究的东西,二来也可以将自己写的一些东西分享出去,给他人参考,还可能收到他人的一些建议,从而完善自己的项目和提升自己的技术,这也是一种很好的技术交流方 ...

  7. 【源码】iOS指纹解锁Touch ID的开发

    指纹解锁原理: 苹果在文件中对iPhone 5S配备的Touch ID指纹识别系统的功能与工作原理进行了详细说明.文件对iPhone 5S的A7处理器中""Secure Encla ...

  8. 支付宝指纹解锁流程分析以及代码实现

    经常使用支付宝的的指纹登录,既安全,又方便.抽空就结合着指纹的相关知识,理了一下这个流程. 在梳理支付宝指纹流程之前,先熟悉一下关于指纹解锁的知识. 指纹解锁的相关类位于 LocalAuthentic ...

  9. 一键获取解锁码_Windows 骚操作:轻轻一按手机指纹解锁电脑!

    轻轻一按手机指纹解锁电脑!https://www.zhihu.com/video/1081611061639122944 这是一个锁定账户的 Windows 电脑,它本身不自带指纹解锁设备.但如果你有 ...

最新文章

  1. 设一棵完全二叉树共有500个结点,则在该二叉树中有______个叶子结点
  2. 位向量 补码与无符号 加法与乘法 CSAPP学习笔记
  3. SQL实战篇:SQL窗口函数及真题
  4. HTMLParser使用举例
  5. Lesson 4 Part 2 Softmax Regression
  6. mysql免费框架_MySQL(ORM框架)
  7. zookeeper 日志查看_zookeeper 安装和集群配置
  8. Symantec 不用密码卸载
  9. 360度全方位超详尽iPhone5s新手入门宝典(上)
  10. 网页设计与制作教程(第2版)刘瑞斯+课本演练代码
  11. java中getBytes()方法的使用
  12. python draw函数_networkx draw函数的图例
  13. python链家二手房_python采集链家二手房信息
  14. 前工程师讲解:开关电源设计-LLC电源
  15. 工业动画制作过程介绍(一)——静态简笔图画的制作
  16. 第1讲、Cadence Allergo绘制小马哥DragonFly四轴飞行器PCB四层板教程简介
  17. 宏旺半导体为你解释手机内存不够用的原因
  18. Git命令及集成IDEA、Gitee/GitHub/GitLab
  19. 水文分析与计算——年均流量趋势检验(Mann-Kendall法、线性回归法)
  20. 3GPP TS 23501-g51 中英文对照 | 4.4.7 MSISDN-less MO SMS Service

热门文章

  1. 人机交互界面设计大作业_为什么说大多数UI设计、大数据、人工智能等培训班不靠谱?...
  2. pyqt5 不报错退出_Python学习之旅:使用virtualenv创建Python环境及PyQT5环境配置
  3. 创建struct fib_info函数分析
  4. Java学习日报—SQL基础—2021/11/29
  5. webpack3.0 压缩css 但是不在html中引用,webpack怎样压缩css?
  6. linux mysql多主一从_linux中mysql多主一从热备份
  7. 【重难点】【JUC 04】synchronized 原理、ReentrantLock 原理、synchronized 和 Lock 的对比、CAS 无锁原理
  8. 【LeetCode】剑指 Offer 57 - II. 和为s的连续正数序列
  9. wait、notify、notifyAll和Condition
  10. python学习第29天