/**

* 指纹/面部ID登录验证

*/

- (void)loadAuthentication

{

//1.判断iOS8及以后的版本

if([UIDevice currentDevice].systemVersion.doubleValue >= 8.0){

LAContext *context = [LAContext new];

context.localizedFallbackTitle = @"";

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

//4.在可以使用的前提下就会调用

//localizedReason本地原因alert显示

NSString *localizedReason = @"指纹登录";

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

if (context.biometryType == LABiometryTypeTouchID) {

}else if (context.biometryType == LABiometryTypeFaceID){

localizedReason = @"人脸识别";

}

}

[context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:localizedReason reply:^(BOOL success, NSError * _Nullable error) {

if(success)

{

NSLog(@"指纹认证成功");

dispatch_async(dispatch_get_main_queue(), ^{

//验证成功的操作

});

}

else

{

//                weakSelf.helper.isAppCurrentLoginState = NO;

NSLog(@"指纹认证失败,%@",error.description);

NSLog(@"%ld", (long)error.code); // 错误码 error.code

switch (error.code)

{

case LAErrorAuthenticationFailed: // Authentication was not successful, because user failed to provide valid credentials

{

NSLog(@"授权失败"); // -1 连续三次指纹识别错误

dispatch_async(dispatch_get_main_queue(), ^{

[MyToast showWithText:@"指纹验证失败!"];

});

}

break;

case LAErrorUserCancel: // Authentication was canceled by user (e.g. tapped Cancel button)

{

NSLog(@"用户取消验证Touch ID"); // -2 在TouchID对话框中点击了取消按钮

dispatch_async(dispatch_get_main_queue(), ^{

});

}

break;

case LAErrorUserFallback: // Authentication was canceled, because the user tapped the fallback button (Enter Password)

{

NSLog(@"用户选择输入密码,切换主线程处理"); // -3 在TouchID对话框中点击了输入密码按钮

}

break;

case LAErrorSystemCancel: // Authentication was canceled by system (e.g. another application went to foreground)

{

NSLog(@"取消授权,如其他应用切入,用户自主"); // -4 TouchID对话框被系统取消,例如按下Home或者电源键

}

break;

case LAErrorPasscodeNotSet: // Authentication could not start, because passcode is not set on the device.

{

NSLog(@"设备系统未设置密码"); // -5

}

break;

case LAErrorTouchIDNotAvailable: // Authentication could not start, because Touch ID is not available on the device

{

NSLog(@"设备未设置Touch ID"); // -6

}

break;

case LAErrorTouchIDNotEnrolled: // Authentication could not start, because Touch ID has no enrolled fingers

{

NSLog(@"用户未录入指纹"); // -7

}

break;

#if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_9_0

case LAErrorTouchIDLockout: //Authentication was not successful, because there were too many failed Touch ID attempts and Touch ID is now locked. Passcode is required to unlock Touch ID, e.g. evaluating LAPolicyDeviceOwnerAuthenticationWithBiometrics will ask for passcode as a prerequisite 用户连续多次进行Touch ID验证失败,Touch ID被锁,需要用户输入密码解锁,先Touch ID验证密码

{

NSLog(@"Touch ID被锁,需要用户输入密码解锁"); // -8 连续五次指纹识别错误,TouchID功能被锁定,下一次需要输入系统密码

dispatch_async(dispatch_get_main_queue(), ^{

[self openTouchIDPAssword];

});

}

break;

case LAErrorAppCancel: // Authentication was canceled by application (e.g. invalidate was called while authentication was in progress) 如突然来了电话,电话应用进入前台,APP被挂起啦");

{

NSLog(@"用户不能控制情况下APP被挂起"); // -9

}

break;

case LAErrorInvalidContext: // LAContext passed to this call has been previously invalidated.

{

NSLog(@"LAContext传递给这个调用之前已经失效"); // -10

}

break;

#else

#endif

default:

{

[[NSOperationQueue mainQueue] addOperationWithBlock:^{

NSLog(@"其他情况,切换主线程处理");

}];

break;

}

}

}

}];

}else{

NSLog(@"请确保(5S以上机型),TouchID未打开");

dispatch_async(dispatch_get_main_queue(), ^{

[self openTouchIDPAssword];

});

}

}else{

NSLog(@"设备不支持指纹");

dispatch_async(dispatch_get_main_queue(), ^{

[self openTouchIDPAssword];

});

}

}

-(void)openTouchIDPAssword{

UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"未开启系统Touch ID"message:@"请现在系统设置-TouchID密码中开启"preferredStyle:UIAlertControllerStyleAlert];

UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"知道了" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {

//无开启指纹解锁

}];

[alertController addAction:cancelAction];

[self presentViewController:alertController animated:YES completion:nil];

}

iPhone X面部ID解锁相关推荐

  1. 【全网首发】戴口罩也能百分百用iPhone面容ID解锁手机的方法

    iPhone的面容ID解锁真的很烦人,解锁速度其实并没有指纹解锁快,尤其戴着口罩的时候更是痛苦,戴着口罩无法解锁的时候还需要拉下口罩,否则就只能输入密码解锁. 在网上搜寻了很多解决方案,主要有2种传播 ...

  2. iPhone删除面部解锁忘记了密码

    想要删除iPhone上面的面容ID,但是需要输入密码才能够删除,这应该怎么解决问题?这种情况,其实就是需要解锁iPhone的屏幕密码锁了,三种方法尝试解锁手机密码,删除面容ID. 方法一 iTunes ...

  3. iPhone 12面容ID功能无法使用解决方法「苹果教程」

    苹果果今年发布的iPhone12机型均配备面容ID,如果在使用该功能时遇到问题,可参考如下方法尝试解决: 一.出现"面容ID不可用"的提示: 如果iPhone屏幕上出现提示&quo ...

  4. 在黑市里,iPhone 是这样被解锁的!

    如何买到一台便宜的iPhone呢? 在淘宝或者闲鱼上搜索,可以看到大量的二手手机.然而这就是最便宜的iPhone了吗?并不是.如果仔细搜索,很快就可以发现一批带有ID锁的手机在出售.它们的价格甚至比相 ...

  5. iphone 已停用 解锁_如何修复“解锁iPhone以使用配件”

    iphone 已停用 解锁 Starting with iOS 12, you will always have to unlock your iPhone or iPad to connect a ...

  6. 苹果6访问限制密码4位_Aiseesoft iPhone Unlocker(苹果设备解锁工具) 官方版v1.0.22 下载...

    Aiseesoft iPhone Unlocker(苹果设备解锁工具)是一款专门用于苹果设备的密码删除工具,在忘记密码的情况下,通过工具便可以帮助你移除密码,然后重新设置.通常密码会帮助用户保护自己的 ...

  7. iphone已停用解锁大概多少钱_iPhone已停用怎么办 iPhone已停用解决方案汇总

    相信会有一些iPhone用户输入错误解锁密码,或者被爱捣蛋的小孩乱按屏幕,导致出现iPhone已停用的状态,虽然只需要等待一分钟,但是还有是有一些iPhone用户傲娇的不愿多等,那么,遇到iPhone ...

  8. iphone已停用解锁大概多少钱_iPhone 已停用?如何解锁密码?

    如果你忘记了iPhone密码,或者你输入了一个你认为是正确的iPhone密码,但它一直被拒绝, 此时你的iPhone已被停用或锁定,有什么解决方案吗?我们教你几分钟搞定已停用iPhone的方法. 在开 ...

  9. iphone已停用解锁大概多少钱_iPhone停用怎么解锁 三种处理方法详解

    [巴士数码]一些用户遇到了iPhone被停用的情况,不知道怎么解锁的具体操作方法,现在和大家分享三种iPhone停用怎么解锁的处理方法.如果你的iPhone或者iPad被停用了可以试试以下三种方法进行 ...

最新文章

  1. AngularJS recursive(递归)
  2. 小程序真机测试「启动参数」解析出错问题
  3. AI、元宇宙技术方兴未艾,软件测试重装上阵
  4. angularjs html 缓存,如何删除使用AngularJS的HTML中的浏览器缓存?
  5. LeetCode简单题(一)
  6. ROS,launch学习
  7. Qt 中实现在控件中点击鼠标,就在鼠标点击处加载图片的方法
  8. 白板推导系列Pytorch-隐马尔可夫模型-学习问题
  9. windows系统镜像修复计算机,如何修复/移除Windows 10 镜像错误 - 易我科技
  10. mbedtls | 08 - ECDH秘钥协商算法的配置与使用
  11. 解决阿里云CentOS8 yum安装appstream报错,更新yum后无法makecache的问题
  12. 93.<报错 SyntaxError: Unexpected token R in JSON at position 0 at JSON.parse (<anonymous>)的解决方法>
  13. c语言对浮点数截断,C语言中浮点数精度进行截断输出
  14. 【Apache Kylin 】 大数据下的OLAP解决方案(原理篇)
  15. 机器学习笔记~图像的空间分辨率
  16. 哈工大软件构造 复习
  17. Java界面可以放GIF吗_如何在java窗体中插入gif图
  18. excel中如何依据日期相等实现数据匹配
  19. 医院网站改版注意事项和技巧
  20. 数学加强 第一节 第二课

热门文章

  1. Office 365 函数之Substitute函数
  2. 新品上市|FDISYSTEMS推出DETA10T惯导RTK倾斜测量解决方案
  3. windows 下配置 apache 2.2.3+php 5.1.3+mysql 5.0.24+zend 3.0.1最新配置
  4. 表格表单HTML代码学生登记,html实现用户注册页面(表单+表格)——html小练习...
  5. 03.1跟雨痕看go源码- go routine(未完待续)
  6. 有哪些适合新手练手的前端项目?
  7. 中望3D 2023使用过滤器选择2023
  8. 【色彩L5笔记:环境光】
  9. 毕业设计 大数据电商用户行为分析 -python 大数据
  10. 新浪微博Python SDK笔记——发微博(一)