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 实现的更多相关文章

  1. Touch ID使用

    前言:如果图片看不了请移步:简书 Touch ID简介 Touch ID指纹识别作为iPhone 5s上的"杀手级"功能早已为人们所熟知,目前搭载的设备有iphone SE.iPh ...

  2. 微信将推指纹支付 "指付通"会与Touch ID整合吗

    有消息称微信下一版本将推指纹支付“指付通”,解决手机丢失资金安全的问题(这个应该是针对阿里手机支付的弱点),到时候用户绑定的银行卡进行付款时,不用输入密码只需在专门的支付设备(苹果Touch ID ? ...

  3. iOS 使用Touch ID 校验[新增 iOS9 三种错误]

    iOS8后苹果开放了Touch ID的API给开发者,这也给我们的app带来了新的体验.开发者们可使用向第三方应用开放了Touch ID权限的API,以便他们在应用中使用指纹认证来完成用户认证或支付购 ...

  4. 苹果5S指纹扫描识别传感器Touch ID有利于iPhone的安全性

    iPhone5S新增的指纹扫描识别传感器 Touch ID,黑客花了大量的时间表明指纹验证是可以被破解的.即使它可能被黑客攻击,对iPhone5S的安全性而言,仍然具有极大的好处. 为什么一个容易被破 ...

  5. Mate7微信指纹支付来了 比Touch ID整合微信早一点

    之前我们聊过微信将推指纹支付 "指付通"会与Touch ID整合吗这个话题,现在有国内厂商率先支持微信指纹支付,体验一下美国用户使用Apple Pay搭配Touch ID来实现便捷 ...

  6. Touch ID集成

    作者感言 这个国庆由于种种原因, 过的不太安稳, 搬家, 办证, 东跑西跑, 忙的压根就不像是在过节....不过算了, 挑最后一天写写博文.最后:如果你有更好的建议或者对这篇文章有不满的地方, 请联系 ...

  7. IOS 8 关于 Touch ID

    一.什么是Touch ID? Touch ID是在iPhone 5s后的设备上出现的指纹识别.Apple在IOS 8中开放给第三方APP使用. 可以使用 Touch ID 来验证用户的身份,用户经验证 ...

  8. Touch ID指纹解锁使用

    Touch ID是iPhone5S后加入的一项新的功能,也就是大家熟知的指纹识别技术.大家用得最多的可能是手机的解屏操作,不用在和以前一样输入手机的四位数密码进行验证.一方面不用担心密码被别人看到,另 ...

  9. iOS开发——Touch ID 指纹识别

    项目中为了安全性,一般使用密码或iPhone手机的指纹识别Touch ID. 第一步,判断系统是否支持,iOS8.0及以上才支持. 第二步,判断手机是否支持,带Touch ID的手机iPhone5s及 ...

随机推荐

  1. BZOJ 4390: [Usaco2015 dec]Max Flow

    4390: [Usaco2015 dec]Max Flow Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 177  Solved: 113[Submi ...

  2. JavaScript系列文章:详解正则表达式之二

    在上一篇文章中我们讲了正则表达式的基本用法,接下来博主想聊聊其中的细节,今天就从正则修饰符开始吧. 正则修饰符又称为正则标记(flags),它会对正则的匹配规则做限定,进而影响匹配的最终结果.在上次的 ...

  3. 11 Set和Map数据结构

    Set和Map数据结构 Set WeakSet Map WeakMap 首先 这四个对象都是 数据结构. 用于存放数据 Set 类似数组. 但是不能重复. 如果你有重复数据,会自动忽略 属性 size ...

  4. git文件迁移到新架构

    环境: ubuntu16.04 代码托管地址:git.oschina.net 迁移原因: git上某工程是一堆静态页面html,因为在ubuntu下缺乏git图形客户端,想使用eclipse集成的gi ...

  5. Netty源码分析之服务端启动过程

    一.首先来看一段服务端的示例代码: public class NettyTestServer { public void bind(int port) throws Exception{ EventL ...

  6. Git 总结

    详情请参考:https://git-scm.com/book/zh/v2 注意事项:#1. 多提交(相当于多保存,多^S): 在Git中任何已提交的东西几乎总是可以恢复的. 甚至那些被删除的分支中的提 ...

  7. Hibernate配置方式

    Hibernate配置方式 Hibernate给人的感受是灵活的,要达到同一个目的,我们可以使用几种不同的办法.就拿Hibernate配置来说,常用的有如下三种方式,任选其一. 在 hibernate ...

  8. [Java] ApplicationContext 辅助类

    我们经常需要获取各种 bean , 需要用到 context. 下面的类可以方便的使用 context , 获取 bean 等. import java.io.File; import java.ut ...

  9. webstorm 更改默认服务器端口

    File ->Settings              Build,Execution,Deployment->Debugger 如下图 找到Debugger

  10. iOS 10、Xcode 8 遇到部分问题解决记录

    今天把iphone 6 升级到ios10 后,用Xcode 7进行真机调试的时候提示: Could not find Developer Disk Image 果断准备升级到Xcode 8 .但是想保 ...