TouchID指纹识别是iPhone 5S设备中增加的一项重大功能.苹果的后续移动设备也相继添加了指纹功能,在实际使用中还是相当方便的,比如快捷登录,快捷支付等等.系统提供了相应框架,使用起来还是比较方便的.使用LAContext对象即可完成指纹识别,提高用户体验.

TouchID

提示:指纹识别必须用真机测试,并且在iOS8以上系统.

TouchID API使用

1.添加头文件

#import

2.判断系统版本

//首先判断版本

if (NSFoundationVersionNumber < NSFoundationVersionNumber_iOS_8_0) {

NSLog(@"系统版本不支持TouchID");

return;

}

3.LAPolicy

在这里简单介绍一下LAPolicy,它是一个枚举.我们根据自己的需要选择LAPolicy,它提供两个值:

LAPolicyDeviceOwnerAuthenticationWithBiometrics和LAPolicyDeviceOwnerAuthentication.

<1>. LAPolicyDeviceOwnerAuthenticationWithBiometrics是支持iOS8以上系统,使用该设备的TouchID进行验证,当输入TouchID验证5次失败后,TouchID被锁定,只能通过锁屏后解锁设备时输入正确的解锁密码来解锁TouchID。

<2>.LAPolicyDeviceOwnerAuthentication是支持iOS9以上系统,使用该设备的TouchID或设备密码进行验证,当输入TouchID验证5次失败后,TouchID被锁定,会触发设备密码页面进行验证。

4. canEvaluatePolicy

使用canEvaluatePolicy方法判断设备是否支持TouchID,返回BOOL为YES,该设备支持TouchID。

if ([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error]) {

error为返回验证错误码.具体不解释了.

4. evaluatedPolicyDomainState

context.evaluatedPolicyDomainState用于判断设备上的指纹是否被更改,在LAContext被创建的时候,evaluatedPolicyDomainState才生效,可在TouchID验证成功时,将它记录下来,用于下次使用TouchID时校验,提高安全性。

5. evaluatePolicy

evaluatePolicy方法是对TouchID进行验证,Block回调中如果success为YES则验证成功,为NO验证失败,并对error进行解析.

- (IBAction)loginButtonClick:(UIButton *)sender {

//首先判断版本

if (NSFoundationVersionNumber < NSFoundationVersionNumber_iOS_8_0) {

NSLog(@"系统版本不支持TouchID");

return;

}

LAContext *context = [[LAContext alloc] init];

context.localizedFallbackTitle = @"输入密码";

if (@available(iOS 10.0, *)) {

// context.localizedCancelTitle = @"22222";

} else {

// Fallback on earlier versions

}

NSError *error = nil;

if ([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error]) {

[context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:@"通过Home键验证已有手机指纹" reply:^(BOOL success, NSError * _Nullable error) {

if (success) {

dispatch_async(dispatch_get_main_queue(), ^{

NSLog(@"TouchID 验证成功");

});

}else if(error){

switch (error.code) {

case LAErrorAuthenticationFailed:{

dispatch_async(dispatch_get_main_queue(), ^{

NSLog(@"TouchID 验证失败");

});

break;

}

case LAErrorUserCancel:{

dispatch_async(dispatch_get_main_queue(), ^{

NSLog(@"TouchID 被用户手动取消");

});

}

break;

case LAErrorUserFallback:{

dispatch_async(dispatch_get_main_queue(), ^{

NSLog(@"用户不使用TouchID,选择手动输入密码");

});

}

break;

case LAErrorSystemCancel:{

dispatch_async(dispatch_get_main_queue(), ^{

NSLog(@"TouchID 被系统取消 (如遇到来电,锁屏,按了Home键等)");

});

}

break;

case LAErrorPasscodeNotSet:{

dispatch_async(dispatch_get_main_queue(), ^{

NSLog(@"TouchID 无法启动,因为用户没有设置密码");

});

}

break;

case LAErrorTouchIDNotEnrolled:{

dispatch_async(dispatch_get_main_queue(), ^{

NSLog(@"TouchID 无法启动,因为用户没有设置TouchID");

});

}

break;

case LAErrorTouchIDNotAvailable:{

dispatch_async(dispatch_get_main_queue(), ^{

NSLog(@"TouchID 无效");

});

}

break;

case LAErrorTouchIDLockout:{

dispatch_async(dispatch_get_main_queue(), ^{

NSLog(@"TouchID 被锁定(连续多次验证TouchID失败,系统需要用户手动输入密码)");

});

}

break;

case LAErrorAppCancel:{

dispatch_async(dispatch_get_main_queue(), ^{

NSLog(@"当前软件被挂起并取消了授权 (如App进入了后台等)");

});

}

break;

case LAErrorInvalidContext:{

dispatch_async(dispatch_get_main_queue(), ^{

NSLog(@"当前软件被挂起并取消了授权 (LAContext对象无效)");

});

}

break;

default:

break;

}

}

}];

}else{

NSLog(@"当前设备不支持TouchID");

}

}

上面这个代码, 是整个TouchID的核心,也几乎是所有代码了.

验证

验证必须使用真机

结果

输入错误的时候

总结:TouchID使用起来不难,重要的是使用流程逻辑.

以登录为例,一般来说流程是这样的:

1.开启指纹登录:首次登陆使用密码登录,登录后,可以设置一个开启指纹ID登录的按钮,来进行指纹认证.

2.验证:检测是否支持TouchID.

3.生成设备账号/密码:TouchID验证通过后,根据当前已登录的账号和硬件设备Token,生成设备账号/密码(规则可自定,密码要长要复杂),并保存在keychain;

4.绑定:生成设备账号/密码后,将原账号及设备账号/密码,加密后(题主使用的是RSA加密)发送到服务端进行绑定;

5.成功:验证原账号及设备账号有效后,返回相应状态,绑定成功则完成整个TouchID(设备)绑定流程。

ios与android指纹识别,iOS 指纹登录(TouchID)集成方案相关推荐

  1. 指纹识别-(2)指纹图像的获取

    指纹识别-(2)指纹图像的获取 一.指纹采集器采集指纹 1.指纹采集器分类 单指扫描的电子指纹采集器根据类型可以分为:光学指纹采集器.半导体指纹采集器. (1)光学指纹采集器 光学指纹采集器基于全内反 ...

  2. 【指纹识别】指纹识别【含GUI Matlab源码 029期】

    ⛄一.指纹识别简介 指纹识别技术主要分三个步骤:指纹预处理.特征提取.指纹分类与匹配. 无论是指纹分类还是指纹匹配,都需要提取指纹的有效特征,而特征提取的性能很大程度上要依赖于指纹图像的质量.在实际应 ...

  3. 【Matlab指纹识别】指纹识别门禁系统【含GUI源码 1692期】

    一.代码运行视频(哔哩哔哩) [Matlab指纹识别]指纹识别门禁系统[含GUI源码 1692期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 包子阳,余继 ...

  4. 【Matlab指纹识别】指纹识别匹配门禁系统【含GUI源码 587期】

    一.代码运行视频(哔哩哔哩) [Matlab指纹识别]指纹识别匹配门禁系统[含GUI源码 587期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 包子阳,余 ...

  5. html5 指纹识别,Http指纹识别技术

    Http指纹识别技术 Http指纹识别现在已经成为应用程序安全中一个新兴的话题,Http服务器和Http应用程序安全也已经成为网络安全中的重要一部分.从网络管理的立场来看,保持对各种web服务器的监视 ...

  6. ios与android指纹识别,iOS指纹识别功能实践

    iOS8 苹果开放了指纹验证功能,支持5s以上的机型. 1.导入框架 #import 2.定义几种可能性的block回调 typedef void (^SuccessVerifyBlock) (BOO ...

  7. ios与android指纹识别,iOS开发swift -- 指纹识别

    //导入类库 import LocalAuthentication func touchID() { //创建上下文 let context = LAContext() var error : NSE ...

  8. ios与android指纹识别,iOS开发实现TouchID指纹解锁

    一直想实现一下指纹解锁,苦于一直没时间,最近终于闲了下来所以翻了翻文档看了看demo,完成了这篇教程.本功能实现起来是很简单的,因为苹果都已经帮我们封装好了,只需要实现几个方法就可以了. 实现效果图 ...

  9. 【图像识别-指纹识别】指纹特征提取附matlab代码

    1 内容介绍 ​一 指纹增强 采用Lin Hong等人提出的基于Gabor滤波的方法进行指纹增强,可分为以下步骤: 标准化:标准化是把图像的平均灰度和方差调整到预定的级别上,以减少脊线上的灰度差异,方 ...

最新文章

  1. 利用“栈”解决“出轨”问题
  2. 可视化卷及神经网络热力图
  3. 不炫技,SVG+CSS3 旋转动画属性就能实现的梦幻效果
  4. Boost:gzip解压缩器
  5. 中石油训练赛 - Isomorphic Inversion(哈希+贪心)
  6. 什么是mysql索引文件_数据库索引文件一般采用什么数据结构?
  7. 幻灯片:LINQ Inside, Part 1
  8. 前端:高德地图快速入门使用
  9. fstream流对象形参时出现的错误问题(codeblocks+gcc)
  10. BT1120协议详解
  11. matlab跑微分方程画图,偏微分方程工具箱PDE
  12. SegNet论文笔记
  13. 手机+PC电脑如何使用油猴插件和油猴脚本?
  14. 洛谷——P1160 队列安排
  15. 单片机、嵌入式ARM学习网站推荐(多年的积累)
  16. lineedit加入边框 qt_qt qlineedit 边框
  17. 2013中国企业500强榜单出炉
  18. 揭开特斯拉的地图“疑云”
  19. 京东数据库智能运维平台建设之路
  20. 小程序、APP Store 需要的 SSL 证书是个什么东西?

热门文章

  1. i310100f配什么主板好 i3 10100f配什么显卡
  2. 【励志】我的研究生三年-公子龙
  3. 图书管理系统测试报告--信息管理功能篇
  4. python爬取b站用户_python爬取b站排行榜
  5. i51155g7和i51135g7的区别 哪个好
  6. vue中老虎机效果的简单实现-带立即停止功能
  7. 手机关闭java 功能吗,赶紧关闭手机这功能,不然你将后悔莫及
  8. Android 阿拉伯语适配
  9. RHCE(一)--- at、crontab、网卡绑定
  10. idea配置maven环境