博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS - TouchID 指纹识别
阅读量:7067 次
发布时间:2019-06-28

本文共 3397 字,大约阅读时间需要 11 分钟。

前言

NS_CLASS_AVAILABLE(10_10, 8_0) @interface LAContext : NSObject
  • 指纹识别功能是 iPhone 5s 推出的,SDK 是 iOS 8.0 推出。

  • 推出指纹识别的主要原因是为了简化支付,移动支付的环节越简单越好。

  • 1)指纹验证方式:

    // 只使用指纹验证    LAPolicyDeviceOwnerAuthenticationWithBiometrics NS_ENUM_AVAILABLE(NA, 8_0) = kLAPolicyDeviceOwnerAuthenticationWithBiometrics,    // 使用指纹和设备密码验证,指纹错误或无法验证时会自动跳转到输入密码验证界面    LAPolicyDeviceOwnerAuthentication NS_ENUM_AVAILABLE(10_11, 9_0) = kLAPolicyDeviceOwnerAuthentication
  • 2)指纹验证错误信息:

    // 指纹无法识别                        error.code == -1    LAErrorAuthenticationFailed = kLAErrorAuthenticationFailed,    // 用户点击了 "取消" 按钮               error.code == -2    LAErrorUserCancel           = kLAErrorUserCancel,    // 用户取消,点击了 "输入密码" 按钮       error.code == -3    LAErrorUserFallback         = kLAErrorUserFallback,    // 系统取消,例如激活了其他应用程序        error.code == -4    LAErrorSystemCancel         = kLAErrorSystemCancel,    // 验证无法启动,因为设备上没有设置密码     error.code == -5    LAErrorPasscodeNotSet       = kLAErrorPasscodeNotSet,    // 验证无法启动,因为设备上没有 Touch ID   error.code == -6    LAErrorTouchIDNotAvailable  = kLAErrorTouchIDNotAvailable,    // 验证无法启动,因为没有输入指纹          error.code == -7    LAErrorTouchIDNotEnrolled   = kLAErrorTouchIDNotEnrolled,    LAErrorTouchIDLockout   NS_ENUM_AVAILABLE(10_11, 9_0) = kLAErrorTouchIDLockout,    LAErrorAppCancel        NS_ENUM_AVAILABLE(10_11, 9_0) = kLAErrorAppCancel,    LAErrorInvalidContext   NS_ENUM_AVAILABLE(10_11, 9_0) = kLAErrorInvalidContext

1、指纹识别的使用

  • Objective-C

    // 包含本地身份验证头文件    #import 
    // 判断用户手机系统是否是 iOS 8.0 以上版本 if ([UIDevice currentDevice].systemVersion.floatValue < 8.0) { return; } // 实例化本地身份验证上下文 LAContext *context= [[LAContext alloc] init]; // 判断是否支持指纹识别 if (![context canEvaluatePolicy:LAPolicyDeviceOwnerAuthentication error:NULL]) { return; } [context evaluatePolicy:LAPolicyDeviceOwnerAuthentication localizedReason:@"请验证已有指纹" reply:^(BOOL success, NSError * _Nullable error) { // 输入指纹开始验证,异步执行 if (success) { [self refreshUI:[NSString stringWithFormat:@"指纹验证成功"] message:nil]; } else { [self refreshUI:[NSString stringWithFormat:@"指纹验证失败"] message:error.userInfo[NSLocalizedDescriptionKey]]; } }]; // 主线程刷新 UI - (void)refreshUI:(NSString *)str message:(NSString *)msg { dispatch_async(dispatch_get_main_queue(), ^{ UIAlertController *alert = [UIAlertController alertControllerWithTitle:str message:msg preferredStyle:UIAlertControllerStyleAlert]; [self presentViewController:alert animated:YES completion:^{ dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ [alert dismissViewControllerAnimated:YES completion:nil]; }); }]; }); }
  • 效果

    TouchID1TouchID2

    TouchID3TouchID4

2、指纹识别的设置

  • Objective-C

    // 判断是否支持指纹识别    if (![context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:NULL]) {    }    // 取消指纹验证    [context invalidate];    // 设置 输入密码 按钮的标题    context.localizedFallbackTitle = @"输入密码按钮标题";    // 设置 取消 按钮的标题    context.localizedCancelTitle = @"取消按钮标题";

转载地址:http://kaall.baihongyu.com/

你可能感兴趣的文章
rspamd 一些常见配置记录
查看>>
CentOS 7.2 mini 安装 tomcat 8.5.20 + httpd 2.4.6 + mod_jk 1.2.12 负载均衡和 session 复制
查看>>
CentOS6.4安装Python web开发+生产环境
查看>>
Java单例模式
查看>>
mogilefs管理
查看>>
linux运维学习之ansib基础知识详解
查看>>
mysql备份脚本(转)
查看>>
Activity 如何管理Thread
查看>>
python入门(八)捕获异常及内置参数
查看>>
鼠标滚动改变导航栏进度
查看>>
14-思科防火墙:ASA对IP分片的处理
查看>>
运维大师讲堂,7天从入门到进阶
查看>>
C语言scanf函数用法详细解释!
查看>>
【PHP-ZF】项目实战纵览(持续更新中...)
查看>>
深入理解HTML协议
查看>>
Spring 中获取 request 的几种方法,及其线程安全性分析
查看>>
您对TOP Server的德语、中文和日语语言支持了解吗?(一)
查看>>
JetBrains公司引入了新的JVM语言Kotlin
查看>>
边防综合指挥训练系统解决方案
查看>>
使用Python获取Google日历条目
查看>>