Touch ID 实现
Touch ID
1.要求
机型:iPhone 5s以上
系统:iOS8以上
框架:#import <LocalAuthentication/LocalAuthentication.h>
注意:做iOS 8以下版本适配时,务必进行API验证,避免调用相关API引起崩溃。
2.具体代码实现:
//初始化上下文对象
LAContext* context = [[LAContext alloc] init];
//错误对象
NSError* error = nil;
NSString* result = @"Authentication is needed to access your notes.";
//首先使用canEvaluatePolicy 判断设备支持状态
/*
LAErrorAuthenticationFailed
LAErrorUserCancel
LAErrorUserFallback
LAErrorSystemCancel 被挂起取消了授权(用户自己切到了别的应用)
LAErrorPasscodeNotSet
LAErrorTouchIDNotAvailable
LAErrorTouchIDNotEnrolled
LAErrorTouchIDLockout 多次连续使用Touch ID失败,Touch ID被锁,需要用户输入密码解锁
LAErrorAppCancel 被挂起取消了授权(用户不能控制的挂起)
LAErrorInvalidContext LAContext对象被释放掉了
*/
if ([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error]) {
//支持指纹验证
[context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:result reply:^(BOOL success, NSError *error) {
if (success) {
//验证成功,主线程处理UI
NSLog(@"success");
}
else
{
NSLog(@"%@",error.localizedDescription);
switch (error.code) {
case LAErrorAuthenticationFailed:
{
NSLog(@"用户提供的指纹不对");
break;
}
case LAErrorUserCancel:
{
NSLog(@"用户点击了取消按钮");
break;
}
case LAErrorUserFallback:
{
NSLog(@"用户选择输入密码");
[[NSOperationQueue mainQueue] addOperationWithBlock:^{
//用户选择输入密码,切换主线程处理
}];
break;
}
case LAErrorSystemCancel:
{
NSLog(@"切换到其他的app(按了Home按键),被系统取消");
break;
}
case LAErrorTouchIDLockout :
{
NSLog(@"用户指纹错误多次,TOuchID 被锁定");
break;
}
case LAErrorAppCancel:
{
NSLog(@"被(突如其来的)应用(电话)取消");
break;
}
default:
{
[[NSOperationQueue mainQueue] addOperationWithBlock:^{
//其他情况,切换主线程处理
}];
break;
}
}
}
}];
}
else
{
//不支持指纹识别,LOG出错误详情
switch (error.code) {
case LAErrorPasscodeNotSet:
{
NSLog(@"在设置里面没有设置密码");
break;
}
case LAErrorTouchIDNotAvailable:
{
NSLog(@"设备不支持TouchID");
break;
}
case LAErrorTouchIDNotEnrolled:
{
NSLog(@"在设置里面没有设置TouchId 指纹");
break;
}
case LAErrorInvalidContext:
{
NSLog(@"创建的指纹对象失效");
break;
}
default:
{
NSLog(@"TouchID not available");
break;
}
}
NSLog(@"%@",error.localizedDescription);
}
原文链接: https://segmentfault.com/a/1190000002516465
Touch ID 实现的更多相关文章
- Touch ID使用
前言:如果图片看不了请移步:简书 Touch ID简介 Touch ID指纹识别作为iPhone 5s上的"杀手级"功能早已为人们所熟知,目前搭载的设备有iphone SE.iPh ...
- 微信将推指纹支付 "指付通"会与Touch ID整合吗
有消息称微信下一版本将推指纹支付“指付通”,解决手机丢失资金安全的问题(这个应该是针对阿里手机支付的弱点),到时候用户绑定的银行卡进行付款时,不用输入密码只需在专门的支付设备(苹果Touch ID ? ...
- iOS 使用Touch ID 校验[新增 iOS9 三种错误]
iOS8后苹果开放了Touch ID的API给开发者,这也给我们的app带来了新的体验.开发者们可使用向第三方应用开放了Touch ID权限的API,以便他们在应用中使用指纹认证来完成用户认证或支付购 ...
- 苹果5S指纹扫描识别传感器Touch ID有利于iPhone的安全性
iPhone5S新增的指纹扫描识别传感器 Touch ID,黑客花了大量的时间表明指纹验证是可以被破解的.即使它可能被黑客攻击,对iPhone5S的安全性而言,仍然具有极大的好处. 为什么一个容易被破 ...
- Mate7微信指纹支付来了 比Touch ID整合微信早一点
之前我们聊过微信将推指纹支付 "指付通"会与Touch ID整合吗这个话题,现在有国内厂商率先支持微信指纹支付,体验一下美国用户使用Apple Pay搭配Touch ID来实现便捷 ...
- Touch ID集成
作者感言 这个国庆由于种种原因, 过的不太安稳, 搬家, 办证, 东跑西跑, 忙的压根就不像是在过节....不过算了, 挑最后一天写写博文.最后:如果你有更好的建议或者对这篇文章有不满的地方, 请联系 ...
- IOS 8 关于 Touch ID
一.什么是Touch ID? Touch ID是在iPhone 5s后的设备上出现的指纹识别.Apple在IOS 8中开放给第三方APP使用. 可以使用 Touch ID 来验证用户的身份,用户经验证 ...
- Touch ID指纹解锁使用
Touch ID是iPhone5S后加入的一项新的功能,也就是大家熟知的指纹识别技术.大家用得最多的可能是手机的解屏操作,不用在和以前一样输入手机的四位数密码进行验证.一方面不用担心密码被别人看到,另 ...
- iOS开发——Touch ID 指纹识别
项目中为了安全性,一般使用密码或iPhone手机的指纹识别Touch ID. 第一步,判断系统是否支持,iOS8.0及以上才支持. 第二步,判断手机是否支持,带Touch ID的手机iPhone5s及 ...
随机推荐
- neo4j-访问提示No authorization header supplied.
在使用java连接neo4j数据库时 public static void main(String[] args) throws SQLException { Connection con = Dri ...
- openvpn 启动
安装 yum -y install openvpn 配置文件可以放在: /etc/openvpn 例如,我这里的路径: [mslagee@centos-dev ~]$ cd /etc/openvpn/ ...
- MySQL数据库创建视图
视图可以说是一种虚拟表,建立在基本表的基础上,通过关联一个表或者多个表来获取多个表中需要的字段,视图只是用来查询数据并不能用来存储数据信息. 我有以下几张表: -------image表---- -- ...
- ubuntu16.04配置py-faster-rcnn
在ubuntu16.04下编译安装了py-faster-rcnn. 主要步骤包括:安装cuda/cudnn,换apt源,装开源显卡驱动,装caffe依赖的apt包和python包,下载py-faste ...
- Jetson ARM SeetaFace编译
SeetaFace简介 SeetaFace依赖于OpenCV,对于Tegra on Ubuntu,Nvidia提供libopencv4tegra并且可以使用Cuda加速. 准备工作 1.阅读OpenC ...
- windows bat批处理语法简析
第一节先介绍windows批处理.这个起源于跟旁边同事学习在windows用命令行办公,渐渐地有些批处理功能就需要了,于是专门抽出了几天学习了一下.我认为文档最重要的功能是为了备忘,择取了很多文档的例 ...
- python笔记1-转义字符
print(r'dd"e"f')print(r'dd'e'f')print(r"dd"e"f")print(r"dd'e'f&qu ...
- 使用Python解析JSON数据
使用Python解析百度API返回的JSON格式的数据 # coding:utf-8 # !/usr/bin/env python import matplotlib.pyplot as plt fr ...
- Salesforce ADM201备考心得
Salesforce拥有很多针对不同角色的认证考试.ADM201是面对初级管理员的认证. 考试形式是单选题和多选题(如果是多选题,题干上会提示你要多选),两个小时时间,60道题目.内容涉及管理Sale ...
- prototype,__proto__,constructor
proto属性: 所有对象都有此属性.但它不是规范里定义的属性,并不是所有JavaScript运行环境都支持.它指向对象的原型,也就是你说的继承链里的原型.通过Object.getPrototypeO ...