iOS - TouchID 指纹识别
前言
NS_CLASS_AVAILABLE(10_10, 8_0) @interface LAContext : NSObject
指纹识别功能是 iPhone 5s 推出的,SDK 是 iOS 8.0 推出。
推出指纹识别的主要原因是为了简化支付,移动支付的环节越简单越好。
1)指纹验证方式:
// 只使用指纹验证
LAPolicyDeviceOwnerAuthenticationWithBiometrics NS_ENUM_AVAILABLE(NA, 8_0) = kLAPolicyDeviceOwnerAuthenticationWithBiometrics, // 使用指纹和设备密码验证,指纹错误或无法验证时会自动跳转到输入密码验证界面
LAPolicyDeviceOwnerAuthentication NS_ENUM_AVAILABLE(10_11, 9_0) = kLAPolicyDeviceOwnerAuthentication
2)指纹验证错误信息:
// 指纹无法识别 error.code == -1
LAErrorAuthenticationFailed = kLAErrorAuthenticationFailed, // 用户点击了 "取消" 按钮 error.code == -2
LAErrorUserCancel = kLAErrorUserCancel, // 用户取消,点击了 "输入密码" 按钮 error.code == -3
LAErrorUserFallback = kLAErrorUserFallback, // 系统取消,例如激活了其他应用程序 error.code == -4
LAErrorSystemCancel = kLAErrorSystemCancel, // 验证无法启动,因为设备上没有设置密码 error.code == -5
LAErrorPasscodeNotSet = kLAErrorPasscodeNotSet, // 验证无法启动,因为设备上没有 Touch ID error.code == -6
LAErrorTouchIDNotAvailable = kLAErrorTouchIDNotAvailable, // 验证无法启动,因为没有输入指纹 error.code == -7
LAErrorTouchIDNotEnrolled = kLAErrorTouchIDNotEnrolled, LAErrorTouchIDLockout NS_ENUM_AVAILABLE(10_11, 9_0) = kLAErrorTouchIDLockout,
LAErrorAppCancel NS_ENUM_AVAILABLE(10_11, 9_0) = kLAErrorAppCancel,
LAErrorInvalidContext NS_ENUM_AVAILABLE(10_11, 9_0) = kLAErrorInvalidContext
1、指纹识别的使用
Objective-C
// 包含本地身份验证头文件
#import <LocalAuthentication/LocalAuthentication.h> // 判断用户手机系统是否是 iOS 8.0 以上版本
if ([UIDevice currentDevice].systemVersion.floatValue < 8.0) {
return;
} // 实例化本地身份验证上下文
LAContext *context= [[LAContext alloc] init]; // 判断是否支持指纹识别
if (![context canEvaluatePolicy:LAPolicyDeviceOwnerAuthentication error:NULL]) {
return;
} [context evaluatePolicy:LAPolicyDeviceOwnerAuthentication
localizedReason:@"请验证已有指纹"
reply:^(BOOL success, NSError * _Nullable error) { // 输入指纹开始验证,异步执行
if (success) { [self refreshUI:[NSString stringWithFormat:@"指纹验证成功"] message:nil]; } else { [self refreshUI:[NSString stringWithFormat:@"指纹验证失败"] message:error.userInfo[NSLocalizedDescriptionKey]];
}
}]; // 主线程刷新 UI
- (void)refreshUI:(NSString *)str message:(NSString *)msg { dispatch_async(dispatch_get_main_queue(), ^{ UIAlertController *alert = [UIAlertController alertControllerWithTitle:str
message:msg
preferredStyle:UIAlertControllerStyleAlert]; [self presentViewController:alert animated:YES completion:^{ dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[alert dismissViewControllerAnimated:YES completion:nil];
});
}];
});
}
效果


2、指纹识别的设置
Objective-C
// 判断是否支持指纹识别
if (![context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:NULL]) { } // 取消指纹验证
[context invalidate]; // 设置 输入密码 按钮的标题
context.localizedFallbackTitle = @"输入密码按钮标题"; // 设置 取消 按钮的标题
context.localizedCancelTitle = @"取消按钮标题";
iOS - TouchID 指纹识别的更多相关文章
- iOS 钥匙串 指纹识别 get和Post请求的区别
01-钥匙串 1. 通过系统提供的钥匙串功能可以在本地保存密码,系统使用AES的方式对密码加密 a. 查看Safari中保存的密码 2. 使用第三方框架SSKeychain把密码保存到钥匙串和获取钥匙 ...
- ios开发-指纹识别
最近我们使用支付宝怎么软件的时候,发现可以使用指纹了,看起来是否的高大上.当时苹果推出了相关接口,让程序写起来很简单哈. 在iPhone5s的时候,苹果推出了指纹解锁.但是在ios8.0的时候苹果才推 ...
- 如何使用iOS 8 指纹识别,代码、示例
像想象,iOS 8指纹是非常容易使用的.只是需要能够获得一个接口,弹出屏幕模式框,随着app store在相同的. 直接上的条形码.以下代码是从复制Apple官方文件. 加入LocalAuthenti ...
- IOS指纹识别调用
最近正在开发的一个app需要加入指纹识别的功能,先搜索一下找到官方文档,简单易懂: https://developer.apple.com/library/ios/documentation/Loca ...
- 深夜闲聊节目:华为 Mate7的指纹识别安全么?
许久没有写过不论什么东西,近期非常忙并且还要准备找工作之类的,唉... ....今天的文章也不说技术,仅仅是闲聊. 一.手机指纹识别一揽 打开非常多站点.论坛的科技栏目,充斥着各种手机讯息!仿佛手机已 ...
- iOS8指纹识别TouchID
苹果在2014年6月3日的WWDC2014开幕式上推出了新版iOS8系统,界面上iOS8与iOS7相比变化不大,只是在功能方面进行了完好.iOS8通知中心更加强大,支持消息直接回复操作,并支持Quic ...
- 指纹识别人脸识别 iOS
//1.判断iOS8及以后的版本 if([UIDevice currentDevice].systemVersion.doubleValue >= 8.0){ //从iPhone5S开始,出现指 ...
- iOS指纹识别Touch ID的安全性探讨
苹果公司在 iPhone 5s 的发布会上公布了全新的指纹识别安全技术,也就是 Touch ID,开创了生物安全识别技术在便携设备上使用的新篇章.此后,苹果还将此技术带到了 iPad 上.此前没有任何 ...
- iOS - (个人隐私钱包调用系统本机TouchID指纹锁验证)
// // ViewController.m // TouchID指纹验证 // // Created by apple on 16/9/18. // Copyright © 2016年 ap ...
随机推荐
- JDK结构介绍
dt.jar和tools.jar位于:{Java_Home}/lib/下, 而rt.jar位于:{Java_Home}/jre/lib/下, 其中: (1) rt.jar是JAVA基础类库,也就是你在 ...
- win8以上系统,设置英文为默认输入法
说明:这里将添加“简体中文(美式键盘)”,也就是英文输入法,并设置为默认输入法. 1.打开控制面板—时钟.语言和区域—语言,点击“添加语言”,选择“英语”—打开,选择“英语(美国)” —添加. 2.选 ...
- linux中Iptables限制同一IP连接数防CC/DDOS攻击方法
1.限制与80端口连接的IP最大连接数为10,可自定义修改. 代码如下 复制代码 iptables -I INPUT -p tcp --dport 80 -m connlimit --connlim ...
- Nagios监控远端的mysql
工作原理: 利用特定的用户定期访问指定的mysql数据库.当不能访问或连不通时则报警. 1.在生产库上安装nagios插件 安装略 备注:编译完显示一定要有mysql支持,不然没有chec ...
- 2、HTML
软件的结构: C/S(Client Server)结构的软件: 比如: QQ. 极品飞车. 飞信 . 迅雷 cs结构的软件的缺点:更新的时候需要用户下载更新包然后再安装,程序员则需要开发客户端与服务端 ...
- String.Join 和 Distinct 方法 去除字符串中重复字符
Qualys项目中写到将ServerIP以“,”分割后插入数据库并将重复的IP去除后发送到服务器进行Scan,于是我写了下面的一段用来剔除重复IP: //CR#1796870 modify by v- ...
- dirname和basename命令
dirname返回文件所在目录路径,而basename则相反,去掉路径返回最后的文件名. dirname指令 1.功能:从给定的包含绝对路径的文件名中去除文件名(非目录的部分),然后返回剩下的路径(目 ...
- javascript 中==和===的区别
对于JavaScript中比较运算符,可能大家用的比较多的是“==”.对于“===”很多人可能很陌生.=== 表示恒等,首先比较两边的变量数据类型是否相等,其次比较两边的变量的数值是否相等:= ...
- [充电]Code Review
参考:http://blog.jobbole.com/83595/ http://www.kuqin.com/shuoit/20150319/345323.html 让 Code Review成为一种 ...
- SDUT 2408:Pick apples
Pick apples Time Limit: 1000MS Memory limit: 165536K 题目描述 Once ago, there is a mystery yard which on ...