iOS中Swift指触即开集成Touch ID指纹识别功能的方法

1.前言 

随着移动支付时代的到来,Touch ID 指纹验证迅速被支付宝,微信钱包普及,相信各位朋友使用后也大呼方便。今天写一篇关于指纹解锁的文章。

关于3D Touch 感兴趣的朋友可以看我前篇blog

*    iOS- 指压即达,如何集成iOS9里的3D Touch

http://www.jb51.net/article/108922.htm

2.指纹验证Touch ID的介绍  

相比3D Touch来说,指纹验证Touch ID 的使用比较简单

主要分成两步

1.第一步当然是检测你的手机是否可以使用指纹识别(硬件配置)

2.第二步自然是识别你的指纹是否通过(苹果的指纹生物识别方式)

指纹验证通过的就不多说了,这里因为比较简单,就说说几种失败的情况

1.例如,在iPhone 4s,5上运行结果为:

com.apple.LocalAuthentication Code=-6 "Biometry is not available on this device.

2.例如,在模拟器

com.apple.LocalAuthentication Code=-1000 "Simulator is not supported.

这上面两种是硬件配置

接下来还有几种需要注意是:指纹识别不通过,也就是指纹识别错误!

1.连续三次指纹识别错误

com.apple.LocalAuthentication Code=-1 "Aplication retry limit exceeded.

2.用户在Touch ID对话框中点击了取消按钮

com.apple.LocalAuthentication Code=-2 "Canceled by user.

3.Touch ID功能被锁定,下一次需要输入系统密码
com.apple.LocalAuthentication Code=-1 "Biometry is locked out.

4.用户在Touch ID对话框中点击输入密码按钮

com.apple.LocalAuthentication Code=-3 "Fallback authentication mechanism selected.

2.指纹验证Touch ID的实现  

好了,下面就直接上代码了,注释都给了较为详细的解释。

别忘了 import LocalAuthentication 框架

override func viewDidLoad() {
 super.viewDidLoad()
 //1.初始化TouchID句柄
 let authentication = LAContext()
 var error: NSError?
 //2.检查Touch ID是否可用
 let isAvailable = authentication.canEvaluatePolicy(.DeviceOwnerAuthenticationWithBiometrics,
 error: &error)
 //3.处理结果
 if isAvailable
 {
 NSLog("Touch ID is available")
  //这里是采用认证策略 LAPolicy.DeviceOwnerAuthenticationWithBiometrics
  //--> 指纹生物识别方式
  authentication.evaluatePolicy(.DeviceOwnerAuthenticationWithBiometrics, localizedReason: "这里需要您的指纹来进行识别验证", reply: {
  //当调用authentication.evaluatePolicy方法后,系统会弹提示框提示用户授权
  (success, error) -> Void in
  if success
  {
  NSLog("您通过了Touch ID指纹验证!")
  }
  else
  {
  //上面提到的指纹识别错误
  NSLog("您未能通过Touch ID指纹验证!错误原因:\n\(error)")
  }
 })
 }
 else
 {
 //上面提到的硬件配置
 NSLog("Touch ID不能使用!错误原因:\n\(error)")
 }
}

以上所述是小编给大家介绍的iOS中Swift指触即开集成Touch ID指纹识别功能的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

时间: 2017-03-17

IOS 指纹识别两种方式详解及实例

IOS 指纹识别两种方式详解及实例 首先引入类名: #import <LocalAuthentication/LocalAuthentication.h> 然后在实现指纹识别的地方放入如下代码: 方式一: LAContext *lacontext = [[LAContext alloc]init]; // 判断设备是否支持指纹识别 BOOL isSupport = [lacontext canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWit

iOS中指纹识别常见问题汇总

最近公司的 app 要使用指纹支付了;总体来说还是蛮顺利的;但是中间有遇到一些坑;下面就对坑进行汇总; 一.基本知识 点开这个LocalAuthentication.framework,发现里面主要有这么几个东西 LocalAuthentication.framework - LAContext.h - LAError.h - LAPublicDefines.h - LocalAuthentication.h LocalAuthentication.h 这个没什么可讲的吧,代码就两行,一行导入L

iOS中应用内添加指纹识别的实例代码

iOS8之后苹果发布了指纹识别的功能,通过touch ID来识别用户,做用户授权,主要是依赖于LocalAuthentication库 指纹识别:一判断设备是否支持指纹识别功能 二识别指纹,成功后做相应的动作,失败后提醒用户指纹识别失败 先引入#import <LocalAuthentication/LocalAuthentication.h> LAContext *context = [[LAContext alloc] init]; NSError *error = nil; //验证是否

IOS 指纹识别详解及实例代码

IOS 指纹识别,这里整理下项目中用的知识. IOS 指纹识别现在,在要求安全与效率兼得的时候,普通密码已不能满足我们的要求,指纹识别就这样诞生了. 每个人都有自己专属的指纹,在需要支付等输入密码的地方,我们只需轻轻一按即可,避免了输入密码的繁琐步骤,更加安全,而且妈妈再也不用担心我们忘记密码. 其实,听着高大上,实现起来特别简单,因为苹果已经帮我们封装好了,我们只需要简单的调用就好了. 1.首先,我们需要导入头文件: #import <LocalAuthentication/LocalAuth

IOS开发 UIAlertController详解及实例代码

 IOS开发 UIAlertController详解 在iOS 8.0后,苹果弃用了UIAlertView和UIActionSheet,转而使用UIAlertController把之前的UIAlertView和UIActionSheet整合在一起.新版的API变得简洁了不少几行代码就可实现之前一大片代码的功能 UIAlertController* alert = [UIAlertController alertControllerWithTitle:@"My Alert" messag

IOS 自定义UIPickView详解及实例代码

IOS 自定义UIPickView 苹果一直推崇使用原生的组件,自带的UIPickView其实也很漂亮了,看起来也很美观.但是有时候,产品会有一些特殊的设计和需求.本文将会讲解如何修改苹果原生的组件的属性,达到自定义UIPickView的效果. 需求如下.需要自定义一个Tab.自定义选中文字的颜色.自定义选中颜色背景,自定义未选中文字颜色. 修改未选中的文字的字体和颜色 经过分析,上面的取消和确定按钮实现起来还是很简单的.加一个条就好了,我就不介绍具体步骤,下面的没有选中时候文字的样色,已经字体

IOS 数据存储详解及实例代码

iOS应用数据存储的常用方式 XML属性列表(plist)归档 Preference(偏好设置) NSKeyedArchiver归档(NSCoding) SQLite3 Core Data 1. XML属性列表(plist)归档 每个iOS应用都有自己的应用沙盒(应用沙盒就是文件系统目录),与其他文件系统隔离.应用必须待在自己的沙盒里,其他应用不能访问该沙盒. 应用沙盒结构分析: 应用程序包:包含了所有的资源文件和可执行文件 Documents:保存应用运行时生成的需要持久化的数据,iTunes

IOS 中UIApplication详解及实例

IOS 中UIApplication详解及实例 以前刚学iPhone开发时,觉得UIApplication这个东西特NB,特神秘,比如它居然能打开一个URL,而且还是用一个很神秘的方法得到实例: [UIApplication sharedApplication] 它对我的神秘感一直保持到今天下午.今天下午负责UI设计的同事在设计,我没有素材,比较清闲,于是发个狠,专门看了一下UIApplication这个类.果然是难者不会,会者不难,看完之后,这个类的神秘感一下子没了.下面让我来揭开它的神秘面纱

微信小程序中实现一对多发消息详解及实例代码

微信小程序中实现一对多发消息详解及实例代码 微信小程序中各个界面之间的传值和通知比较蛋疼.所以模仿了iOS中的通知中心,在微信小程序中写了一套类似的通知中心. 通知中心可以做到:1对多发消息,传递object.使用十分简洁. 使用时,在需要接收消息的界面注册一个通知名.然后在需要发消息的界面post这个通知名就可以了.可以在多个界面注册同一个通知名.这样就可以1对多发消息. 使用方法: 1:在app.js中引用notification.js var notificationCenter = re

Android Dialog详解及实例代码

 Android Dialog详解及实例代码 概述: Android开发中最常用的就是Dialog类,除了自定义dialog布局,最多的就是用在弹出对话框.进度条.输入框.单选.复选框. 1.选择对话框: AlertDialog.Builder dialog = new AlertDialog.Builder(this); dialog.setTitle("选择对话框"); dialog.setMessage("请选择确认或取消"); dialog.setCance

MyBatis获取数据库自生成的主键Id详解及实例代码

MyBatis获取数据库自生成的主键Id详解及实例代码 在使用MySQL数据库时我们一般使用数据库的自增主键自动产生主键.如果在插入主表时,我们需要同时插入从表的数据,这时我们通常需要知道主表插入时自动产生的主键Id值. 下面介绍使用MyBatis进行插入时,如何同时获取数据库自生成的主键: 1.XML配置文件 <insert id="insert" parameterType="Person" useGeneratedKeys="true"

MySQL 序列 AUTO_INCREMENT详解及实例代码

MySQL 序列 AUTO_INCREMENT详解及实例代码 MySQL序列是一组整数:1, 2, 3, ...,由于一张数据表只能有一个字段自增主键, 如果你想实现其他字段也实现自动增加,就可以使用MySQL序列来实现. 本章我们将介绍如何使用MySQL的序列. 使用AUTO_INCREMENT MySQL中最简单使用序列的方法就是使用 MySQL AUTO_INCREMENT 来定义列. 实例 以下实例中创建了数据表insect, insect中id无需指定值可实现自动增长. mysql>

Java 两种延时thread和timer详解及实例代码

Java 两种延时thread和timer详解及实例代码 在Java中有时候需要使程序暂停一点时间,称为延时.普通延时用Thread.sleep(int)方法,这很简单.它将当前线程挂起指定的毫秒数.如 try { Thread.currentThread().sleep(1000);//毫秒 } catch(Exception e){} 在这里需要解释一下线程沉睡的时间.sleep()方法并不能够让程序"严格"的沉睡指定的时间.例如当使用5000作为sleep()方法的参数时,线 程