iOS开发——Touch ID 指纹识别
项目中为了安全性,一般使用密码或iPhone手机的指纹识别Touch ID。
第一步,判断系统是否支持,iOS8.0及以上才支持。
第二步,判断手机是否支持,带Touch ID的手机iPhone5s及以上才支持。
代码如下:
- (void)openTouchID{
if ([UIDevice currentDevice].systemVersion.floatValue < 8.0) {
NSLog(@"系统版本过低,不支持");
return;
}
//创建安全验证对象
LAContext * ctx = [[LAContext alloc]init];
//判断是否支持密码验证
/**
*LAPolicyDeviceOwnerAuthentication 手机密码的验证方式
*LAPolicyDeviceOwnerAuthenticationWithBiometrics 指纹的验证方式
*/
BOOL isEnable = [ctx canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:NULL];
if (isEnable) {
ctx.localizedFallbackTitle = @""; // 去掉错误时显示【输入密码】
[ctx evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:@"指纹验证" reply:^(BOOL success, NSError * _Nullable error) {
if (success)
{
//输入成功 存储状态
// NSString *keyF = [NSString stringWithFormat:@"%@fingerKey",userInfomation().userId];
// [[NSUserDefaults standardUserDefaults] setObject:@"1" forKey:keyF];
// [[NSUserDefaults standardUserDefaults] synchronize];
NSLog(@"指纹验证成功");
dispatch_async(dispatch_get_main_queue(), ^{
// 进入风险评测
});
} else
{
// 失败
dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"指纹验证失败----");
NSLog(@"%@",error.localizedDescription);
switch (error.code) {
case LAErrorSystemCancel:
{
NSLog(@"Authentication was cancelled by the system");
//切换到其他APP,系统取消验证Touch ID
break;
}
case LAErrorUserCancel:
{
NSLog(@"Authentication was cancelled by the user");
//用户取消验证Touch ID
// 进入风险评测
// [self enterRiskEvaluation];
break;
}
case LAErrorAuthenticationFailed:
{
NSLog(@"指纹错误:LAErrorAuthenticationFailed");
//切换到其他APP,系统取消验证Touch ID
[self timesLimited];
break;
}
case LAErrorPasscodeNotSet:
{
NSLog(@"指纹错误:LAErrorPasscodeNotSet");
break;
}
case LAErrorTouchIDNotAvailable:
{
NSLog(@"指纹错误:LAErrorTouchIDNotAvailable");
break;
}
case LAErrorTouchIDNotEnrolled:
{
NSLog(@"指纹错误:LAErrorTouchIDNotEnrolled");
break;
}
case LAErrorTouchIDLockout:
{
NSLog(@"指纹错误:LAErrorTouchIDLockout");
// [self timesLimited];
break;
}
case LAErrorAppCancel:
{
NSLog(@"指纹错误:LAErrorAppCancel");
break;
}
default:
{
// 次数受限
// [self timesLimited];
break;
}
}
//......
});
}
}];
}else{
// 密码验证的方式(不支持指纹) 可加弹窗提示
NSLog(@"不支持指纹");
}
}
效果图如下:

iOS开发——Touch ID 指纹识别的更多相关文章
- iOS- Swift:指触即开,如何集成Touch ID指纹识别功能
1.前言 随着移动支付时代的到来,Touch ID 指纹验证迅速被支付宝,微信钱包普及,相信各位朋友使用后也大呼方便.之前写了篇关于iOS9的3D Touch的集成使用,有朋友在我博客下提到,让我写一 ...
- Touch ID指纹解锁使用
Touch ID是iPhone5S后加入的一项新的功能,也就是大家熟知的指纹识别技术.大家用得最多的可能是手机的解屏操作,不用在和以前一样输入手机的四位数密码进行验证.一方面不用担心密码被别人看到,另 ...
- iOS --- Touch ID指纹解锁
https://www.cnblogs.com/ljmaque/p/TouchID.html 最近在项目中刚好用到了TouchId指纹解锁功能,之前也没有接触过,立马百度看看究竟是要如何使用,发现其实 ...
- iOS 使用Touch ID 校验[新增 iOS9 三种错误]
iOS8后苹果开放了Touch ID的API给开发者,这也给我们的app带来了新的体验.开发者们可使用向第三方应用开放了Touch ID权限的API,以便他们在应用中使用指纹认证来完成用户认证或支付购 ...
- iOS 中 Touch ID得使用方法
iPhone 5S公布以后,iOS设备基本都有集成Touch ID.而这个功能对自己的App也是一个非常好的扩展,关于Touch ID的使用方法.大致例如以下, Swift: 引入LocalAuthe ...
- iOS开发中id、NSObject *、id、instancetype四者有什么区别?
在使用Objective-C语言进行iOS应用开发的时候,常常会涉及到id.NSObject *.id.instancetype这四个概念的使用,但这四者也是iOS初学者最易混淆的内容,下面小编看 ...
- iOS指纹识别Touch ID的安全性探讨
苹果公司在 iPhone 5s 的发布会上公布了全新的指纹识别安全技术,也就是 Touch ID,开创了生物安全识别技术在便携设备上使用的新篇章.此后,苹果还将此技术带到了 iPad 上.此前没有任何 ...
- Touch ID使用
前言:如果图片看不了请移步:简书 Touch ID简介 Touch ID指纹识别作为iPhone 5s上的"杀手级"功能早已为人们所熟知,目前搭载的设备有iphone SE.iPh ...
- iOS Touch Id 开发
Touch Id Touch Id是iPhone5S后加入的一项新的功能,也就是大家熟知的指纹识别技术.大家用得最多的可能是手机的解屏操作,不用在和以前一样输入手机的四位数密码进行验证.一方面不用担心 ...
随机推荐
- freeRadius 基础配置及测试
国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html 内部邀请码:C8E245J (不写邀请码,没有现金送) 国 ...
- 部署WEB应用程序
部署WEB应用程序: 1.在模板机上新建IIS站点 2.安装WebDeploy后在IIS控制台中导出站点为应用程序包 其站点在新虚机上必须存在,否则会报错,如下: 应用程序(C:\ProgramDat ...
- C++ 预编译头文件
1.解决什么问题? C++ 编译器是单独,分别编译的,每个cpp文件,进行预编译(也就是对#include,define 等进行文本替换),生成编译单元.编译单元是一个自包含文件,C++编译器对编译单 ...
- 使用C#: 自动切换鼠标的左右手习惯
不知道我得的是鼠标手,还是肩周炎. 长时间右手(或者左手)使用鼠标的话,那只胳膊便会不自在. 于是便有了切换鼠标主次要键的需求. [控制面板->鼠标]有更改它的设置,可点来点去让我觉得不够方便. ...
- Hibernate征途(七)之复合主键映射和集合映射
把这两种映射放到一起说,是因为这两种映射不像前面的复用型映射.数量和方向型映射那么分类鲜明,所以放到了这个“其他”里面. 复合主键映射 在关系模型中,复合主键和其他的主键方式没有很大区别,但是反映到对 ...
- ListView 文件重命名
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Control ...
- 编写3个不同版本的程序,令其均能输出ia的元素
#include<iostream> #include<vector> #include<string> using namespace std; int main ...
- Header 与 Footer 的 DIV 高度固定, 中间内容 DIV高度自适应,内容不满一页时,默认填满屏幕。
一.需求: 页面布局分三大块: Header Body Footer 1.内容不满一页时,Footer 在屏幕最底部,Body 填充满 Header 与 Footer 中间的部分. 2.当缩小浏览器时 ...
- linux云计算集群架构学习笔记:命令查看文件内容
查看文件内容 1.cat 命令 作用:查看文件内容 语法:cat 文件名 2. more 命令 作用:分页查看文件内容 语法:more 文件名 例:more /etc/passwd 按下回车刷新一行 ...
- [转]IIS7.5 添加expires头 提高性能
本文转自:http://niutuku.com/tech/www/271454.shtml 对于页面中不经常变化的静态内容通过指定expires头,来进行浏览器端的缓存,减少每次访问时的请求. 原理: ...