iOS 指纹识别登录功能实现
简介
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 指纹识别登录功能实现相关推荐
- ThinkPad T410S 上 Ubuntu 14.04 实现指纹识别登录
ThinkPad T410S 上 Ubuntu 14.04 实现指纹识别登录 1.添加PPA源 add-apt-repository ppa:fingerprint/fprint 2.更新包 apt- ...
- ios与android指纹识别,iOS指纹识别功能实践
iOS8 苹果开放了指纹验证功能,支持5s以上的机型. 1.导入框架 #import 2.定义几种可能性的block回调 typedef void (^SuccessVerifyBlock) (BOO ...
- [向前一小步]Android简单实现指纹识别登录
指纹识别在Android的开发中可以说是不怎么常见,但是Google对于生物识别缺失很重视,显示废弃了以往的Android6.0推出的FingerprintManager ,后针对Android9.0 ...
- 指纹识别登录Windows Server服务器远程桌面
[前言] 企业IT管理者经常会面临以下问题: 一人维护多台服务器:每台服务器设置不同的密码,记忆容易混淆,容易忘记:设置简单的密码,容易被破解:设置相同的复杂密码又担心一旦一个密码被泄露,所有服务器都 ...
- 微信小程序调用安卓手机系统指纹实现登录功能
index.js 中添加以下代码: Page({data: {hasLogin: false},onLoad: function () {const _this = thiswx.checkIsSup ...
- java人脸识别_自从加了PC人脸识别登录功能,网站立马显得高大上
之前不是做了个开源项目嘛,在做完GitHub登录后,想着再显得有逼格一点,说要再加个人脸识别登录,就我这佛系的开发进度,过了一周总算是抽时间安排上了. 源码在文末 其实最近对写文章有点小抵触,写的东西 ...
- 如何快速在WEB系统下集成指纹识别登录
首先我们看一下web集成指纹的效果: <script type="text/javascript">var webSocket = new WebSocket('ws: ...
- 做一个人脸识别登录功能
前天晚上散步到一个大学公寓门口,发现公寓的大门口都安装了人脸识别的门禁,就有种强烈的欲望 想要学习一下 哈哈,刚好也在做项目就想运用到这个技术-于是便有了开端. 视觉智能--人脸识别 基于阿里云的视觉 ...
- iOS指纹识别(解锁)
指纹解锁是在iOS8.0之后,API开放了指纹验证的功能.开放的API虽然只能用来作为验证使用,比较局限,但是对于有类似"手势密码"功能的app来说,已经足够用了.有了这个新api ...
最新文章
- TNS-01201: Listener cannot find executable /u01/oracle/bin/extproc for SID orcl Listener failed to
- python numpy安装-Python--Numpy安装
- MSSQL 2005 DML触发器
- linux下zabbix安装
- 应用框架的设计与实现学习手札系列(持续更新)
- [转载] Bitmap的秘密
- java httpclient form_Java后台使用httpclient入门HttpPost请求(form表单提交,File文件上传和传输Json数据)...
- java清理垃圾_垃圾清理势在必行——Java垃圾收集算法
- javascript window location
- 【CoRL 2018】通过元策略优化的MBRL算法
- 济南清北学堂游记 Day 2.
- 【U8+】用友U816.1版本和天高联用,不显示“实施导航”功能模块
- 植物大战僵尸 php,植物大战僵尸Online
- Dubbo入门基础与实例讲解(超详细)
- 经典网页设计:30个独具匠心的单页网站设计案例
- 小程序 蓝牙连接(出现的问题和一些解决方法)
- php连接mongodb数据库报错No suitable servers found
- 如何让行内元素可以设置宽高
- 钛媒体2022 EDGE AWARDS全球创新评选之「年度最佳企业服务品牌」揭榜
- Cocos2dx游戏开发系列笔记5:继续润色《忍者飞镖射幽灵》
热门文章
- 远程连接虚拟机的Network error: Connection timed out问题解决办法
- 全球各种域名后缀注册量TOP100排行榜
- 软件研发效能需求价值流分析专题
- 此beta版已额满_嘻游宝赚钱app下载-嘻游宝红包版下载v1.0安卓版
- ubuntu系统显卡驱动无法登陆
- 第十八章 组织级项目管理
- 显卡服务器已停止响应,快速解决W7系统提示显卡驱动程序已停止响应并且已恢复的故障...
- 解析谷歌官方刷机包结构
- Linux下select函数实现的聊天服务器
- dhcp服务器响应消息有什么,什么是DHCP监听?