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

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

指纹识别:

iPhone5S开始,推出指纹识别

iOS8.0之后苹果允许第三方 App 使用 Touch ID进行身份验证

指纹识别Touch ID提供3+2 = 5次指纹识别机会----->3次识别失败后,指纹验证框消失(会报错code = -1)然后点击指纹会再次弹框可验证两次,如果五次指纹识别全部错误,就需要手动输入数字密码,数字密码可以输入6次,如果6次输入密码错误,系统停止验证,等待验证时间后会提供再次验证的机会,正确及验证成功(1次),错误则时间累加等待验证,以此类推.

iOS10-----> 5次之后有问题: 需要进入设置中 -- TouchID与密码, 输入一次密码, 就可以解开

思路:

1.导入#import<LocalAuthentication/LocalAuthentication.h>

2.判断iOS8及以后版本

3.创建本地验证上下文对象LAContext     (LocalAuthentication)

4. 判断能否使用指纹识别 :Evaluate: 评估  Policy: 策略 LAPolicyDeviceOwnerAuthenticationWithBiometrics: 设备拥有者授权 用 生物识别技术

5.成功调用<有的情况, 需要对错误的次数做累计, 此时就需要排除用户取消>

主要代码及注释:

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

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

//从iPhone5S开始,出现指纹识别技术,所以说在此处可以进一步判断是否是5S以后机型

//2.创建本地验证上下文对象-->这里导入框架LocalAuthentication

LAContext *context = [LAContext new];

// 3.判断能否使用指纹识别

//Evaluate: 评估

//Policy: 策略

//LAPolicyDeviceOwnerAuthenticationWithBiometrics: 设备拥有者授权 用 生物识别技术

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

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

//localizedReason本地原因alert显示

[context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:@"请允许设备指纹识别" reply:^(BOOL success, NSError * _Nullable error) {

if (success) {

//此处记得在主线程中更新UI

dispatch_sync(dispatch_get_main_queue(), ^{

UIAlertController *ac = [UIAlertController alertControllerWithTitle:@"  提示  " message:@" 识别成功 " preferredStyle:UIAlertControllerStyleAlert];

UIAlertAction *confirm = [UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleCancel handler:^(UIAlertAction *_Nonnull action){

}];

[ac addAction:confirm];

[self presentViewController:ac animated:true completion:^{

}];

ac = nil;

});

}

//不需要统计用户取消

if(error.code != -2){

//  指纹识别Touch ID提供3+2 = 5次指纹识别机会----->3次识别失败后,指纹验证框消失(会报错code = -1)然后点击指纹会再次弹框可验证两次,如果五次指纹识别全部错误,就需要手动输入数字密码,数字密码可以输入6次,如果6次输入密码错误,系统停止验证,等待验证时间后会提供再次验证的机会,正确及验证成功(1次),错误则时间累加等待验证,以此类推. (iOS10不一样, 5次之后有问题: 需要进入设置中 -- TouchID与密码, 输入一次密码, 就可以解开)

//Code=-2 "Canceled by user

//Code=-1 "Application retry limit exceeded."

//Code=-8 "Biometry is locked out."

NSLog(@"error: %@", error);

}

}];

}else{

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

}

}

最后<代码思路,如有相同之处,不是故意为之>附上demo地址:  

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

你可能感兴趣的文章
微信网页授权java实现
查看>>
用StackExchange.Redis客户端连接阿里云Redis服务遇到的问题
查看>>
Chapter 1 First Sight——15
查看>>
约束篇
查看>>
leetCode 78.Subsets (子集) 解题思路和方法
查看>>
机器学习入门之四:机器学习的范围(转载)
查看>>
即将成为传奇的微软
查看>>
Android项目实战--手机卫士18--读取用户的短信内容以及短信备份
查看>>
nanosleep纳秒级延迟
查看>>
[C#] 我的log4net使用手册
查看>>
FineUI官方论坛出现空白页的解决办法!
查看>>
进程和线程之间的通信
查看>>
Android MIFARE NFCA源码解析
查看>>
Maven自定义Archetype(zz)
查看>>
设计模式java----单例模式
查看>>
西西弗的石头----读《哲学家都干了些什么》有感
查看>>
【OCR技术系列之二】文字定位与切割
查看>>
【300】◀▶ IDL - ENVI API
查看>>
Docker初体验
查看>>
UBUNTU LINUX中连接ANDROID 小米真机调试
查看>>