iOS Touch ID 身份认证

iOS Touch ID 身份认证

iOS 8 及以后录了指纹的设备可以使用 touch ID 进行身份认证,指纹符合录入的指纹才能认证成功。

步骤

  1. 导入 LocalAuthentication 框架:import LocalAuthentication
  2. 初始化 LAContext 对象:let context = LAContext()
  3. 调用 LAContext 对象的 canEvaluatePolicy(_ policy: LAPolicy, error: NSErrorPointer) -> Bool方法
  4. 上一步如果返回 false,表示不能进行认证,执行相应的失败操作;如果返回 true,调用 LAContext 对象的evaluatePolicy(_ policy: LAPolicy, localizedReason: String, reply: @escaping (Bool, Error?) -> Void)方法,在 reply 中判断是否认证成功来执行相应的操作(如果认证失败,可以获取错误码 code,看看属于 LAError.Code 的哪种类型错误来执行相应的失败操作)

调用 LAContext 对象的 canEvaluatePolicy 和 evaluatePolicy 方法都要传入 LAPolicy 枚举类型的值,目前有两种取值:deviceOwnerAuthenticationWithBiometrics 和 deviceOwnerAuthentication。前一种 deviceOwnerAuthenticationWithBiometrics 是进行指纹认证。后一种 deviceOwnerAuthentication 是 iOS 9.0 及以后才能使用,先进行指纹认证,如果指纹认证失败可以通过输入密码进行认证。

调用 LAContext 对象的 evaluatePolicy 方法会弹出指纹认证对话框。对话框会显示需要进行认证的原因(String),就是 localizedReason 参数的值。对话框有取消按钮,iOS 10.0 及以后可以设置 LAContext 对象的 localizedCancelTitle 的值来改变取消按钮显示的字。如果指纹认证失败,对话框还会显示 fallback 按钮,可以设置 LAContext 对象的 localizedFallbackTitle 的值来改变 fallback 按钮显示的字。

需要注意,evaluatePolicy 方法的 reply 回调不在主线程。如果需要更新 UI 的话,要调用主线程再更新。

代码示例

代码已上传GitHub:https://github.com/Silence-GitHub/TouchIDDemo

在控制器中放置一个 label 显示认证返回结果。

指纹认证代码

let context = LAContext()
context.localizedFallbackTitle = "Fall back button"
if #available(iOS 10.0, *) {
 context.localizedCancelTitle = "Cancel button"
}
var authError: NSError?
if context.canEvaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, error: &authError) {
 context.evaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, localizedReason: "Localized reason for authentication with biometrics", reply: { (success, evaluateError) in
 // NOT in main thread
 DispatchQueue.main.async {
 if success {
 self.label.text = "Success"
 // Do something success
 } else if let error = evaluateError {
 self.label.text = error.localizedDescription
 // Deal with error
 if let code = LAError.Code(rawValue: (error as NSError).code) {
  switch code {
  case .userFallback:
  print("fall back button clicked")
  default:
  break
  }
 }
 }
 }
 })
} else if let error = authError {
 label.text = error.localizedDescription
 // Deal with error
}

指纹和密码认证代码

if #available(iOS 9.0, *) {
 let context = LAContext()
 context.localizedFallbackTitle = "Fall back button"
 if #available(iOS 10.0, *) {
 context.localizedCancelTitle = "Cancel button"
 }
 var authError: NSError?
 if context.canEvaluatePolicy(.deviceOwnerAuthentication, error: &authError) {
 context.evaluatePolicy(.deviceOwnerAuthentication, localizedReason: "Localized reason for authentication", reply: { (success, evaluateError) in
 // NOT in main thread
 DispatchQueue.main.async {
 if success {
  self.label.text = "Success"
  // Do something success
 } else if let error = evaluateError {
  self.label.text = error.localizedDescription
  // When fall back button clicked, user is required to enter PIN. Error code will not be "userFallback"
  // Deal with error
 }
 }
 })
 } else if let error = authError {
 label.text = error.localizedDescription
 // Deal with error
 }
} else {
 let alert = UIAlertController(title: nil, message: "Authentication is available on iOS 9.0 or later", preferredStyle: .alert)
 alert.addAction(UIAlertAction(title: "OK", style: .default, handler: nil))
 present(alert, animated: true, completion: nil)
}

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持我们!

(0)

相关推荐

  • IOS 身份证校验详细介绍及示例代码

    IOS 身份证校验 身份证基础知识: 身份证是国民的身份编号,编号是有一定规律的,这里介绍身份证验证规则比较详细.项目中经常会需要对身份证进行校验,我们先了解一些基本知识,然后分析代码 居民身份证号码,根据[中华人民共和国国家标准 GB 11643-1999]中有关公民身份号码的规定,公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成.排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码. 居民身份证是国家法定的证明公民个人身份的有效证件. 结

  • Objective-C实现身份证验证的方法示例

    前言 最近在一个二次开发的项目中看到了一段身份证验证的OC代码,虽然我一直讨厌二次开发.因为这这个二次开发的项目太老,代码太乱,毫无层次感.可是令人欣慰的是,我在里面发现了一段有用的代码,感兴趣的可以参考学习. 直接上代码 - (BOOL)isValidIdCardNum { NSString *value = [self copy]; value = [value stringByReplacingOccurrencesOfString:@"X" withString:@"

  • iOS正则表达式验证手机号、邮箱、身份证号等

    本文实例为大家分享了常用的iOS正则表达式,供大家参考,具体内容如下 #import "NSString+RegexCategory.h" @implementation NSString (RegexCategory) #pragma mark - 正则相关 - (BOOL)isValidateByRegex:(NSString *)regex{ NSPredicate *pre = [NSPredicate predicateWithFormat:@"SELF MATCH

  • iOS身份证号码识别示例

    一.前言 身份证识别,又称OCR技术.OCR技术是光学字符识别的缩写,是通过扫描等光学输入方式将各种票据.报刊.书籍.文稿及其它印刷品的文字转化为图像信息,再利用文字识别技术将图像信息转化为可以使用的计算机输入技术. 因为项目需要,所以这些天查阅了相关资料,想在网上看看有没有大神封装的现成的demo可以用.但是无果,网上关于ocr这一块的资料很少,比较靠谱的都是要收费的,而且价格也不便宜.但是在天朝,收费感觉心里不爽,所以就决定自己研究一番. 先上一个最终实现的效果(如果mac不是retain屏

  • iOS 中使用正则表达式判断身份证格式及银行卡号格式是否正确(推荐)

    1.有时候我们会用到上传身份证号,或者银行卡号,这个时候就需要我们对身份证号以及银行卡号,进行基本的判断. 下面便是身份证号的判断返回YES是合法,反之不合法 #pragma mark 判断身份证号是否合法 - (BOOL)judgeIdentityStringValid:(NSString *)identityString { if (identityString.length != 18) return NO; // 正则表达式判断基本 身份证号是否满足格式 NSString *regex2

  • iOS判断身份证号码是否正确的方法

    ①根据百度百科中身份证号码的标准实现该方法 ②该方法只能判断18位身份证,且不能判断身份证号码和姓名是否对应(要看姓名和号码是否对应,应该有大量的数据库做对比才能实现) ③直接copy这段代码,就能通过调用这个方法判断身份证号码是否符合标准,非常easy /** * 验证身份证号码是否正确的方法 * * @param IDNumber 传进身份证号码字符串 * * @return 返回YES或NO表示该身份证号码是否符合国家标准 */ - (BOOL)isCorrect:(NSString *)

  • IOS开发之由身份证号码提取性别的实现代码

    一,代码. - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. NSString *sex=[self sexStrFromIdentityCard:@"139876456767892345"]; NSLog(@"--sex--%@",sex); } //由身份证号返回为性别 -(NSString *)sexStrFromIdent

  • IOS身份证识别(OCR源码)详解及实例代码

    IOS身份证识别(OCR源码)详解 最近项目用到身份证识别,在github上搜了一堆demo,在Google上找了一堆代码,有能识别出证件照的,但是都是打包成.a的静态库,没有源码,我努力吃了几天书,有了一点研究成果,现在贴出来与大家分享,要是有更好的方法,希望大神指正,共同探讨解决方案.(以下代码本人亲测可用,正在进一步探索智能识别,如有兴趣,请加入) 这里用到了两个开源库:OpenCV.TesseractOCRiOS,两个语言包chi_sim.eng.身份证识别的流程主要有:灰度化,阀值二值

  • iOS Touch ID 身份认证

    iOS Touch ID 身份认证 iOS 8 及以后录了指纹的设备可以使用 touch ID 进行身份认证,指纹符合录入的指纹才能认证成功. 步骤 导入 LocalAuthentication 框架:import LocalAuthentication 初始化 LAContext 对象:let context = LAContext() 调用 LAContext 对象的 canEvaluatePolicy(_ policy: LAPolicy, error: NSErrorPointer) -

  • iOS Touch ID指纹识别技术简介

    Touch ID简介: 苹果公司在iPhone 5S手机中推出了指纹识别功能,提高手机安全性的同时也方便了用户操作.其功能是通过Touch ID实现的,从iOS 8系统开始,苹果开发一些Touch ID的API使得开发人员可以在自己的应用程序中调用指纹识别功能. Touch ID功能就是指纹识别密码.使用指纹识别功能需要先进入设置-Touch ID 与密码中根据提示添加指纹. 从iOS 8系统开始开放了Touch ID的验证接口功能,在应用程序中可以判断输入的Touch ID是否设置持有者的To

  • 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.第一步当然是检测你的手机是

  • 详解最简单易懂的Spring Security 身份认证流程讲解

    最简单易懂的Spring Security 身份认证流程讲解 导言 相信大伙对Spring Security这个框架又爱又恨,爱它的强大,恨它的繁琐,其实这是一个误区,Spring Security确实非常繁琐,繁琐到让人生厌.讨厌也木有办法呀,作为JavaEE的工程师们还是要面对的,在开始之前,先打一下比方(比方好可怜): Spring Security 就像一个行政服务中心,如果我们去里面办事,可以办啥事呢?可以小到咨询简单问题.查询社保信息,也可以户籍登记.补办身份证,同样也可以大到企业事

  • AngularJS 应用身份认证的技巧总结

    在web中很多时候都能应用到身份认证,本文介绍了AngularJS 应用身份认证的技巧,废话不多说了一起往下看吧. 身份认证 最普遍的身份认证方式就是用用户名(或 email)和密码做登陆操作.这就意味要实现一个登陆的表单,以便用户能够用他们个人信息登陆.这个表单看起来是这样的: <form name="loginForm" ng-controller="LoginController" ng-submit="login(credentials)&q

  • Forms身份认证在IE11下无法保存Cookie的问题

    ASP.NET中使用Forms身份认证常见的做法如下: 1. 网站根目录下的Web.config添加authentication节点 复制代码 代码如下: <authentication mode="Forms"> <forms name="MyAuth" loginUrl="manager/Login.aspx" defaultUrl="manager/default.aspx" protection=&q

  • 详解在ASP.NET Core中使用Angular2以及与Angular2的Token base身份认证

    Angular2是对Angular1的一次彻底的,破坏性的更新. 相对于Angular1.x,借用某果的广告语,唯一的不同,就是处处都不同. •首先,推荐的语言已经不再是Javascript,取而代之的TypeScript,(TypeScript = ES6 + 类型系统 + 类型注解), TypeScriipt的类型系统对于开发复杂的单页Web app大有帮助,同时编译成javascript后的执行效率也比大多数手写javascript要快.有兴趣的同学可以查阅官方文档:英文传送门 |中文传送

  • 浅谈如何在ASP.NET Core中实现一个基础的身份认证

    ASP.NET终于可以跨平台了,但是不是我们常用的ASP.NET, 而是叫一个ASP.NET Core的新平台,他可以跨Windows, Linux, OS X等平台来部署你的web应用程序,你可以理解为,这个框架就是ASP.NET的下一个版本,相对于传统ASP.NET程序,它还是有一些不同的地方的,比如很多类库在这两个平台之间是不通用的. 今天首先我们在ASP.NET Core中来实现一个基础的身份认证,既登陆功能. 前期准备: 1.推荐使用 VS 2015 Update3 作为你的IDE,下

  • PHP中对用户身份认证实现两种方法

    当访问者浏览受保护页面时,客户端浏览器会弹出对话窗口要求用户输入用户名和密码,对用户的身份进行验证,以决定用户是否有权访问页面.下面用两种方法来说明其实现原理. 一.用HTTP标头来实现 标头是服务器以HTTP协议传送HTML信息到浏览器前所送出的字串.HTTP采用一种挑战/响应模式对试图进入受密码保护区域的用户进行身份验证.具体来说,当用户首次向WEB服务器发出访问受保护区域的请求时,挑战进程被启动,服务器返回特殊的401标头,表明该用户身份未经验证.客户端浏览器在检测到上述响应之后自动弹出对

  • C#进阶系列 WebApi身份认证解决方案推荐:Basic基础认证

    前言:最近,讨论到数据库安全的问题,于是就引出了WebApi服务没有加任何验证的问题.也就是说,任何人只要知道了接口的url,都能够模拟http请求去访问我们的服务接口,从而去增删改查数据库,这后果想想都恐怖.经过一番折腾,总算是加上了接口的身份认证,在此记录下,也给需要做身份认证的园友们提供参考. 一.为什么需要身份认证 在前言里面,我们说了,如果没有启用身份认证,那么任何匿名用户只要知道了我们服务的url,就能随意访问我们的服务接口,从而访问或修改数据库. 1.我们不加身份认证,匿名用户可以

随机推荐