全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

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)
}

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


# iOS  # Touch  # ID  # iOS 中使用正则表达式判断身份证格式及银行卡号格式是否正确(推荐)  # IOS开发之由身份证号码提取性别的实现代码  # iOS身份证号码识别示例  # IOS 身份证校验详细介绍及示例代码  # iOS正则表达式验证手机号、邮箱、身份证号等  # IOS身份证识别(OCR源码)详解及实例代码  # iOS判断身份证号码是否正确的方法  # Objective-C实现身份证验证的方法示例  # 对话框  # 身份认证  # 都要  # 还会  # 可以通过  # 弹出  # 可以使用  # 有两种  # 需要注意  # 回调  # 输入密码  # 判断是否  # 法会  # 上一步  # 器中  # 上传  # 哪种类型  # 错误码  # ff  # span 


相关文章: 如何通过网站建站时间优化SEO与用户体验?  网站制作的步骤包括,正确网址格式怎么写?  如何在Golang中使用replace替换模块_指定本地或远程路径  网站制作企业,网站的banner和导航栏是指什么?  活动邀请函制作网站有哪些,活动邀请函文案?  子杰智能建站系统|零代码开发与AI生成SEO优化指南  详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)  魔方云NAT建站如何实现端口转发?  如何在七牛云存储上搭建网站并设置自定义域名?  宝塔面板创建网站无法访问?如何快速排查修复?  哈尔滨网站建设策划,哈尔滨电工证查询网站?  湖南网站制作公司,湖南上善若水科技有限公司做什么的?  北京专业网站制作设计师招聘,北京白云观官方网站?  平台云上自助建站如何快速打造专业网站?  免费网站制作appp,免费制作app哪个平台好?  如何在阿里云香港服务器快速搭建网站?  一键网站制作软件,义乌购一件代发流程?  小说建站VPS选用指南:性能对比、配置优化与建站方案解析  如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?  如何选择服务器才能高效搭建专属网站?  在线教育网站制作平台,山西立德教育官网?  婚礼视频制作网站,学习*后期制作的网站有哪些?  如何快速搭建高效服务器建站系统?  建站org新手必看:2024最新搭建流程与模板选择技巧  手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?  网站视频怎么制作,哪个网站可以免费收看好莱坞经典大片?  建站之星价格显示格式升级,你的预算足够吗?  Bpmn 2.0的XML文件怎么画流程图  建站主机SSH密钥生成步骤及常见问题解答?  网站建设设计制作营销公司南阳,如何策划设计和建设网站?  东莞市网站制作公司有哪些,东莞找工作用什么网站好?  如何快速搭建虚拟主机网站?新手必看指南  岳西云建站教程与模板下载_一站式快速建站系统操作指南  西安大型网站制作公司,西安招聘网站最好的是哪个?  如何规划企业建站流程的关键步骤?  如何构建满足综合性能需求的优质建站方案?  ,怎么在广州志愿者网站注册?  如何制作网站标识牌,动态网站如何制作(教程)?  香港服务器建站指南:外贸独立站搭建与跨境电商配置流程  如何在Golang中使用encoding/gob序列化对象_存储和传输数据  制作网站公司那家好,网络公司是做什么的?  如何快速使用云服务器搭建个人网站?  建站之星×万网:智能建站系统+自助建站平台一键生成  建站之星备案是否影响网站上线时间?  建站之星代理如何获取技术支持?  网站制作网站,深圳做网站哪家比较好?  企业网站制作公司网页,推荐几家专业的天津网站制作公司?  制作公司内部网站有哪些,内网如何建网站?  建站之星如何防范黑客攻击与数据泄露?  建站之星图片链接生成指南:自助建站与智能设计教程 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。