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后加入的一项新的功能,也就是大家熟知的指纹识别技术.大家用得最多的可能是手机的解屏操作,不用在和以前一样输入手机的四位数密码进行验证.一方面不用担心 ...
随机推荐
- Codeforces Bubble Cup 8 - Finals [Online Mirror]H. Bots 数学
H. Bots Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/575/problem/H Desc ...
- MySQL 灵异事件一则 -- desc报语法错误
今天有一开发同学找到我,说查询SQL中倒序报错,不明原因,于是奔赴工位现场研究情况. 果然,只要SQL中带有desc 就会报错,而ASC没问题. 哪怕desc放在句首用作explain也会报错. 报错 ...
- c# TCP/IP编程
这东西很多朋友都有写过了,我也就写着玩玩,就当做个笔记吧.不废话了. TCP/IP在数据通信中被广泛的使用,自然得包含客户端和服务端,当然,自己自言自语不是什么不可以,可那样貌似有点神经. 好了,那就 ...
- Matrix multiplication hdu4920
Problem Description Given two matrices A and B of size n×n, find the product of them. bobo hates big ...
- div 并排
<style type="text/css">#d1 {float:left;background:#f00;}#d2 {float:left;background:# ...
- Objective-C ,ios,iphone开发基础:NSDictionary(字典) 和 NSMutableDictionary
NSDictionary(字典),NSDictionary类似于 .net中的parameter,l类似于java中的map. 通过唯一的key找到对应的值,一个key只能对应一个只,而多个key可以 ...
- 【数值方法,水题】UVa 10341 - Solve It
题目链接 题意: 解方程:p ∗ e^(−x) + q ∗ sin(x) + r ∗ cos(x) + s ∗ tan(x) + t ∗ x^2 + u = 0 (0 <= x <= 1) ...
- Java Classloader原理分析
类的加载过程指通过一个类的全限定名来获取描述此类的二进制字节流,并将其转化为方法区的数据结构,进而生成一个java.lang.Class对象作为方法区这个类各种数据访问的入口.这个过程通过Jav ...
- pc端有弹出层 并有滚动的时候遇到的问题以及解决
有时候页面会遇到这样一个问题,页面有个弹出层 ,弹出层是有动条的,当弹出层滚完的时候,后面的页面也会滚动,但是我们希望是后面的页面不滚动;代码如下 1:弹出层出现的时候设置 $('body').css ...
- li颜色特效
<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head> < ...