其实很简单,用于身份认证的所有的接口都在LocalAuthentication framework中, 该framework实际上只有三个头文件:
  LAContext.h
  LAError.h
  LAPublicDefines.h

而实际用到的函数也只有两个:

// 用来判断设备是否支持Touch ID
- (BOOL)canEvaluatePolicy:(LAPolicy)policy error:(NSError * __autoreleasing *)error __attribute__((swift_error(none)));
// 真正验证身份的函数
- (void)evaluatePolicy:(LAPolicy)policylocalizedReason:(NSString *)localizedReasonreply:(void(^)(BOOL success, NSError * __nullable error))reply;

上述两个函数都是LAContext的member function.目前LAPolicy只有一个值:   LAPolicyDeviceOwnerAuthenticationWithBiometrics.

如果canEvaluatePolicy返回YES,表示设备支持指纹识别,那么便可以调用evaluatePolicy:函数进行指纹识别了.调用evaluatePolicy函数后会弹出一个alert,如下图:

该alert可定制的只有两处:
  1.”To access your photos”提示文字是由localizedReason参数指定的,用来向用户说明使用Touch ID的目的.
  2.”Enter Password”可由LAContext的localizedFallbackTitle属性设置(LAContext目前只有这一个属性),如果不设置的话,默认是”Enter Password”.值得注意的是,如果该属性设置为@“”(空字符串),该按钮会被隐藏,Evernote应该就是这么做的.
  其他的免谈,当然更别提获取用户的指纹数据了.
  理论上三种情况下会退出验证(alert会被dismiss,reply回调会被调用):
  1.用户指纹通过验证
  2.用户点击”Enter Password”按钮
  3.用户点击”Cancel”按钮
  还有一种情况:用户输入了错误的指纹.这种情况下,该alert不会被dismiss,其标题会由”Touch ID”改为”Try Again”,有弹簧状的动画效果过渡.好了,代码如下(不要忘了引入头文件 <LocalAuthentication/LocalAuthentication.h>):
- (IBAction)useTouchIdButtonClick:(id)sender {LAContext *context = [LAContext new];NSError *error;context.localizedFallbackTitle = @"Enter Password";if ([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthentication error:&error]) {NSLog(@"Touch ID is available.");[context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:@"Use Touch ID to login in." reply:^(BOOL success, NSError * _Nullable error) {if (success) {NSLog(@"authenticated using Touch ID.");}else{if (error.code == kLAErrorUserFallback) {NSLog(@"User tapped Enter Password.");}else if (error.code == kLAErrorUserCancel){dispatch_async(dispatch_get_main_queue(), ^{UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@""message:@"User tapped Enter Password."delegate:nilcancelButtonTitle:nilotherButtonTitles:@"Ok", nil];[alert show];});NSLog(@"User tapped Cancel.");}else{NSLog(@"Authenticated failed.");}}}];}else{NSLog(@"Touch ID is not available:%@",error);}
}

效果图如下:

IOS-Touch ID的简单使用相关推荐

  1. iOS Touch ID 使用详情

    简单介绍: 支持系统和机型 iOS系统的指纹识别功能最低支持的机型为iPhone 5s,最低支持系统为iOS 8,虽然安装iOS 7系统的5s机型可以使用系统提供的指纹解锁功能,但由于API并未开放, ...

  2. iOS Touch ID 简易开发教程

    基础知识 支持系统和机型 iOS系统的指纹识别功能最低支持的机型为iPhone 5s,最低支持系统为iOS 8,虽然安装iOS 7系统的5s机型可以使用系统提供的指纹解锁功能,但由于API并未开放,所 ...

  3. iOS开发中Touch ID的使用

    从2013年的iPhone 5s开始苹果就引入了Touch ID,之后Touch ID基本上成了苹果设备的标配,iOS 8起,开发者就可以调用API在自己的应用中添加Touch ID验证功能了,国内常 ...

  4. 保护 iOS 用户数据安全: Keychain 和 Touch ID

    原文:How To Secure iOS User Data: The Keychain and Touch ID 作者:Tim Mitra 译者:kmyhy 更新说明:本教程由 Tim Mitra ...

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

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

  6. 【源码】iOS指纹解锁Touch ID的开发

    指纹解锁原理: 苹果在文件中对iPhone 5S配备的Touch ID指纹识别系统的功能与工作原理进行了详细说明.文件对iPhone 5S的A7处理器中""Secure Encla ...

  7. Touch ID使用

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

  8. 无法在此iPhone上激活Touch ID,怎么解决?

    Touch ID是苹果公司的指纹识别功能,允许用户解锁iPhone或iPad.在苹果商店购物,以及在应用程序中验证Apple Pay等等. 更新到iOS 15后,一些用户遇到了"无法在此iP ...

  9. Touch ID身份认证

    TouchID是苹果公司在iOS 7中引入并在iPhone 5s上使用的新特性,是允许用户解锁设备和在App Store购物的生物识别技术. 现在好多app以及利用此特性进行登录,例如QQ登录.支付宝 ...

  10. React Native集成Touch ID和Face ID

    前言: 使用Touch ID也称为指纹身份验证在移动应用程序中非常流行.Touch ID功能可保护应用程序并使其成为用户的无缝身份验证流程. 许多银行应用程序,如美国银行,发现,大通,使用Touch ...

最新文章

  1. 浙江大学软件学院2020年保研上机模拟练习 7-4 Shopping With Coupons
  2. ffmpeg frei0r filter 参数及效果
  3. java实验2词法分析程序设计
  4. Create, Save, and Open Trace Documents
  5. wds和dhcp分开做需要注意问题
  6. 在 Inno Setup 中实现倒数N秒后激活按钮
  7. 学习《css世界》笔记之使用css实现凹凸效果
  8. 存储卡修复软件测试自学,扩容内存卡用mydisktest失效,教你怎么用USBoot恢复出真实容量...
  9. 医疗病案首页网上直报编码汇总
  10. 吴伯凡-认知方法论-认知的升级=工具的进化
  11. css 一直图片适配所有手机背景图
  12. c语言n层文字塔程序的结构图,精馏塔中由塔顶向下的第n-1,n,n+1层塔板,其气相组成关系为( )...
  13. 电脑桌面变成了计算机,电脑屏幕黄怎么调整_电脑屏幕突然变黄如何恢复
  14. 靴子落地!Mobileye正式启动4D成像雷达量产进程
  15. Fate原理(面试必备)
  16. 2.4【HarmonyOS鸿蒙开发】堆栈布局StackLayout
  17. 解决开发qq音乐singer-detail组件时子路由跳转失败问题
  18. 在黑马的两个月培训的感受
  19. 180°舵机角度控制(mg996 + stm32F1)
  20. github中的常用库

热门文章

  1. 复杂网络是怎么应用于神经网络上
  2. btb和oto,btc模式是什么意思
  3. nrf uart for android,nRF Toolbox for BLE
  4. OCP 11G 051题库解析汇总链接
  5. 微信小程序:wxml中写js语句的方法
  6. 微生物群落结构差异分析
  7. 人生,有时需要不知足!
  8. 默认网关和静态路由表
  9. 基于OpenCV的图片电影换背景小实验(可用于证件照替换背景)_计算机视觉
  10. Troubleshooting: WAITED TOO LONG FOR A ROW CACHE ENQUEUE LOCK!