简介

Touch ID是苹果公司的一种指纹识别技术,从iPhone 5s开始,早已为人们所熟知。

Touch ID不存储用户的任何指纹图像,只保存代表指纹的数字字符。苹果公司提供Touch ID给第三方应用程序使用,程序只会收到认证是否成功的通知,而无法访问 Touch ID 或与已注册指纹相关的数据,这一点对安全而言尤为重要。

现在有很多银行类APP、涉及到支付类的APP都集成了指纹、手势等二次验证功能,从而使APP获得更高的安全性。今天我们就来分析一下指纹识别登录功能的具体实现。

实现步骤

1.首先引入指纹解锁的库文件

#import <LocalAuthentication/LocalAuthentication.h>

2.两个主要方法

  • 这个方法是判断设备是否支持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;

3.核心源码
在demo中touchID函数是实现指纹识别的核心代码,源码如下:

- (void)touchID {//创建LAContextLAContext *context = [LAContext new];//这个属性是设置指纹输入失败之后的弹出框的选项context.localizedFallbackTitle = @"没有忘记密码";NSError *error = nil;if ([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error]) {
//        NSLog(@"支持指纹识别");[context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:@"请按home键指纹登录" reply:^(BOOL success, NSError * _Nullable error) {if (success) {dispatch_async(dispatch_get_main_queue(), ^{UIAlertController *alert = [UIAlertController alertControllerWithTitle:nil message:@"登录成功" preferredStyle:UIAlertControllerStyleAlert];[self presentViewController:alert animated:YES completion:nil];[self performSelector:@selector(dismiss:) withObject:alert afterDelay:1.0];self.nameLab.text = @"FBY展菲";self.setOutBtn.hidden = NO;});}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:{[[NSOperationQueue mainQueue] addOperationWithBlock:^{NSLog(@"用户选择输入密码,切换主线程处理");}];break;}default:{[[NSOperationQueue mainQueue] addOperationWithBlock:^{NSLog(@"其他情况,切换主线程处理");}];break;}}}}];}else{UIAlertController *alert = [UIAlertController alertControllerWithTitle:nil message:@"不支持指纹识别" preferredStyle:UIAlertControllerStyleAlert];[self presentViewController:alert animated:YES completion:nil];[self performSelector:@selector(dismiss:) withObject:alert afterDelay:1.0];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);}}

核心代码只要分为两部分,一部分是设备支持指纹识别,另一部分是设备不支持指纹识别

整理出 45 本电子版书籍

源码Demo获取方法

关注 【网罗开发】微信公众号,回复【89】便可领取。
网罗天下方法,方便你我开发,更多iOS技术干货等待领取,所有文档会持续更新,欢迎关注一起成长!

希望可以帮助大家
如果哪里有什么不对或者不足的地方,还望读者多多提意见或建议
iOS技术交流群:668562416

iOS 指纹识别登录功能实现相关推荐

  1. ThinkPad T410S 上 Ubuntu 14.04 实现指纹识别登录

    ThinkPad T410S 上 Ubuntu 14.04 实现指纹识别登录 1.添加PPA源 add-apt-repository ppa:fingerprint/fprint 2.更新包 apt- ...

  2. ios与android指纹识别,iOS指纹识别功能实践

    iOS8 苹果开放了指纹验证功能,支持5s以上的机型. 1.导入框架 #import 2.定义几种可能性的block回调 typedef void (^SuccessVerifyBlock) (BOO ...

  3. [向前一小步]Android简单实现指纹识别登录

    指纹识别在Android的开发中可以说是不怎么常见,但是Google对于生物识别缺失很重视,显示废弃了以往的Android6.0推出的FingerprintManager ,后针对Android9.0 ...

  4. 指纹识别登录Windows Server服务器远程桌面

    [前言] 企业IT管理者经常会面临以下问题: 一人维护多台服务器:每台服务器设置不同的密码,记忆容易混淆,容易忘记:设置简单的密码,容易被破解:设置相同的复杂密码又担心一旦一个密码被泄露,所有服务器都 ...

  5. 微信小程序调用安卓手机系统指纹实现登录功能

    index.js 中添加以下代码: Page({data: {hasLogin: false},onLoad: function () {const _this = thiswx.checkIsSup ...

  6. java人脸识别_自从加了PC人脸识别登录功能,网站立马显得高大上

    之前不是做了个开源项目嘛,在做完GitHub登录后,想着再显得有逼格一点,说要再加个人脸识别登录,就我这佛系的开发进度,过了一周总算是抽时间安排上了. 源码在文末 其实最近对写文章有点小抵触,写的东西 ...

  7. 如何快速在WEB系统下集成指纹识别登录

    首先我们看一下web集成指纹的效果: <script type="text/javascript">var webSocket = new WebSocket('ws: ...

  8. 做一个人脸识别登录功能

    前天晚上散步到一个大学公寓门口,发现公寓的大门口都安装了人脸识别的门禁,就有种强烈的欲望 想要学习一下 哈哈,刚好也在做项目就想运用到这个技术-于是便有了开端. 视觉智能--人脸识别 基于阿里云的视觉 ...

  9. iOS指纹识别(解锁)

    指纹解锁是在iOS8.0之后,API开放了指纹验证的功能.开放的API虽然只能用来作为验证使用,比较局限,但是对于有类似"手势密码"功能的app来说,已经足够用了.有了这个新api ...

最新文章

  1. TNS-01201: Listener cannot find executable /u01/oracle/bin/extproc for SID orcl Listener failed to
  2. python numpy安装-Python--Numpy安装
  3. MSSQL 2005 DML触发器
  4. linux下zabbix安装
  5. 应用框架的设计与实现学习手札系列(持续更新)
  6. [转载] Bitmap的秘密
  7. java httpclient form_Java后台使用httpclient入门HttpPost请求(form表单提交,File文件上传和传输Json数据)...
  8. java清理垃圾_垃圾清理势在必行——Java垃圾收集算法
  9. javascript window location
  10. 【CoRL 2018】通过元策略优化的MBRL算法
  11. 济南清北学堂游记 Day 2.
  12. 【U8+】用友U816.1版本和天高联用,不显示“实施导航”功能模块
  13. 植物大战僵尸 php,植物大战僵尸Online
  14. Dubbo入门基础与实例讲解(超详细)
  15. 经典网页设计:30个独具匠心的单页网站设计案例
  16. 小程序 蓝牙连接(出现的问题和一些解决方法)
  17. php连接mongodb数据库报错No suitable servers found
  18. 如何让行内元素可以设置宽高
  19. 钛媒体2022 EDGE AWARDS全球创新评选之「年度最佳企业服务品牌」揭榜
  20. Cocos2dx游戏开发系列笔记5:继续润色《忍者飞镖射幽灵》

热门文章

  1. 远程连接虚拟机的Network error: Connection timed out问题解决办法
  2. 全球各种域名后缀注册量TOP100排行榜
  3. 软件研发效能需求价值流分析专题
  4. 此beta版已额满_嘻游宝赚钱app下载-嘻游宝红包版下载v1.0安卓版
  5. ubuntu系统显卡驱动无法登陆
  6. 第十八章 组织级项目管理
  7. 显卡服务器已停止响应,快速解决W7系统提示显卡驱动程序已停止响应并且已恢复的故障...
  8. 解析谷歌官方刷机包结构
  9. Linux下select函数实现的聊天服务器
  10. dhcp服务器响应消息有什么,什么是DHCP监听?