iOS 指纹解锁 验证TouchID
2024-10-14 01:16:58
iOS指纹解锁
1、首先,引入依赖框架 LocalAuthentication.framework
#import <LocalAuthentication/LocalAuthentication.h>
2、然后,判断系统是否为iOS8及以上
//iOS8.0后才支持指纹识别接口
if ([UIDevice currentDevice].systemVersion.floatValue < 8.0) {
return;
}
3、最后,在APP启动时调用以下方法即可完成指纹解锁的全部功能集成
- (void)evaluateAuthenticate
{
//创建LAContext
LAContext* context = [[LAContext alloc] init];
NSError* error = nil;
NSString* result = @"请验证已有指纹"; //首先使用canEvaluatePolicy 判断设备支持状态
if ([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error]) {
//支持指纹验证
[context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:result reply:^(BOOL success, NSError *error) {
if (success) {
//验证成功,主线程处理UI
}
else
{
NSLog(@"%@",error.localizedDescription);
switch (error.code) {
case LAErrorSystemCancel:
{
//系统取消授权,如其他APP切入
break;
}
case LAErrorUserCancel:
{
//用户取消验证Touch ID
break;
}
case LAErrorAuthenticationFailed:
{
//授权失败
break;
}
case LAErrorPasscodeNotSet:
{
//系统未设置密码
break;
}
case LAErrorTouchIDNotAvailable:
{
//设备Touch ID不可用,例如未打开
break;
}
case LAErrorTouchIDNotEnrolled:
{
//设备Touch ID不可用,用户未录入
break;
}
case LAErrorUserFallback:
{
[[NSOperationQueue mainQueue] addOperationWithBlock:^{
//用户选择输入密码,切换主线程处理 }];
break;
}
default:
{
[[NSOperationQueue mainQueue] addOperationWithBlock:^{
//其他情况,切换主线程处理
}];
break;
}
}
}
}];
}
else
{
//不支持指纹识别,LOG出错误详情
NSLog(@"不支持指纹识别"); switch (error.code) {
case LAErrorTouchIDNotEnrolled:
{
NSLog(@"TouchID is not enrolled");
break;
}
case LAErrorPasscodeNotSet:
{
NSLog(@"A passcode has not been set");
break;
}
default:
{
NSLog(@"TouchID not available");
break;
}
} NSLog(@"%@",error.localizedDescription);
}
}
最新文章
- curl post
- Linux文件权限概念
- Hausdorff distance
- java 线程的优先级
- 如何使用XproerUI库(WTL)-XproerUI界面库教程
- Genesis-3D开源游戏引擎简介!
- Windows phone 8 学习笔记(5) 图块与通知
- Lua 服务器与客户端实例(转)
- 二维码utils希望对大家有帮助
- 大数据征信的应用和启示:ZestFinance的基于大数据的信用评估技术
- centos环境的python、scrapy部署
- 大数据---Ranger-1
- git 操作命令详解
- postgre索引
- HDU 3579
- buntu14.04和16.04官方默认更新源sources.list和第三方源推荐(干货!)转
- fiddler抓取https-----重要
- ReentrantLock源码(一)
- Notes of Daily Scrum Meeting(12.16)
- MT【85】正整数系数
热门文章
- Linux常用性能工具功能、用法及原理(一)
- 第一册:lesson eighty one.
- JQuery ajax的使用
- 如何把ASP.NET MVC项目部署到本地IIS上
- Redis中的执行命令的过程
- C#基础知识回顾:1.由WeakReference想到对象的创建与销毁
- 数据库 &#39;xxxx&#39; 的事务日志已满。若要查明无法重用日志中的空间的原因
- mybatis_03_ mapper代理方式实现MyBatis的Dao编写
- spring aop 实践
- SaaS技术栈的走势