浅析IOS开发TouchID指纹解锁功能_IOS

效果图如下

实现过程

1.首先引入指纹解锁必须的头文件

#import <LocalAuthentication/LocalAuthentication.h>

2.了解下主要的两个方法
这个方法是判断设备是否支持TouchID的。

- (BOOL)canEvaluatePolicy:(LAPolicy)policy error:(NSError * __autoreleasing *)error __attribute__((swift_error(none)));

这个是用来验证TouchID的,会有弹出框出来。

- (void)evaluatePolicy:(LAPolicy)policy
  localizedReason:(NSString *)localizedReason
     reply:(void(^)(BOOL success, NSError * __nullable error))reply;

3.新建LAContext对象

主要的属性设置

localizedFallbackTitle:用于设置左边的按钮的名称,默认是Enter Password.

localizedReason:用于设置提示语,表示为什么要使用Touch ID


解锁失败界面

 //创建LAContext
 LAContext *context = [LAContext new];

 //这个属性是设置指纹输入失败之后的弹出框的选项
 context.localizedFallbackTitle = @"没有忘记密码";

4.主要回调方法,包括成功以及失败的

NSError *error = nil;
 if ([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error]) {
  NSLog(@"支持指纹识别");
  [context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:@"指纹解锁" reply:^(BOOL success, NSError * _Nullable error) {
   if (success) {
    NSLog(@"验证成功 刷新主界面");
   }else{
    NSLog(@"%@",error.localizedDescription);
    switch (error.code) {
     case LAErrorSystemCancel:
     {
      NSLog(@"系统取消授权,如其他APP切入");
      break;
     }
     case LAErrorUserCancel:
     {
      NSLog(@"用户取消验证Touch ID");
      break;
     }
     case LAErrorAuthenticationFailed:
     {
      NSLog(@"授权失败");
      break;
     }
     case LAErrorPasscodeNotSet:
     {
      NSLog(@"系统未设置密码");
      break;
     }
     case LAErrorTouchIDNotAvailable:
     {
      NSLog(@"设备Touch ID不可用,例如未打开");
      break;
     }
     case LAErrorTouchIDNotEnrolled:
     {
      NSLog(@"设备Touch ID不可用,用户未录入");
      break;
     }
     case LAErrorUserFallback:
     {
      [[NSOperationQueue mainQueue] addOperationWithBlock:^{
       NSLog(@"用户选择输入密码,切换主线程处理");
      }];
      break;
     }
     default:
     {
      [[NSOperationQueue mainQueue] addOperationWithBlock:^{
       NSLog(@"其他情况,切换主线程处理");
      }];
      break;
     }
    }
   }
  }];
 }else{
  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);
 }

总结

到这里指纹解锁功能几乎就算完成,使用确实很简单,因为苹果都已经给我们做好一切,对我们开发者来说就很轻松了。教程写的很简陋,希望大家多多包涵,如果有疑问大家可以留言交流。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索ios
, ios开发
, 指纹解锁开发
, 指纹解锁封装
touchid开发
指纹解锁功能、touchid无法识别指纹、touchid无法读取指纹、touchid设置指纹失败6、touchid无法设置指纹,以便于您获取更多的相关知识。

时间: 2024-09-22 12:25:04

浅析IOS开发TouchID指纹解锁功能_IOS的相关文章

iOS开发之清除缓存功能的实现_IOS

前言 移动应用在处理网络资源时,一般都会做离线缓存处理,其中以图片缓存最为典型,其中很流行的离线缓存框架为SDWebImage.但是,离线缓存会占用手机存储空间,所以缓存清理功能基本成为资讯.购物.阅读类app的标配功能. 清除缓存基本上都是在设置界面的某一个Cell,于是我们可以把清除缓存封装在某一个自定义Cell中 如下图所示: 实现的具体步骤 使用注意:过程中需要用到第三方库,请提前安装好:SDWebImage.SVProgressHUD. 1. 创建自定义Cell,命名为GYLClear

谷歌 Chrome OS 新增指纹解锁功能 但无设备可用

据外媒报道,谷歌已在其 Chrome OS 桌面操作系统中加入了一项重要的功能.最新开发版(Dev Channel)Chrome OS--版本号为 58.0.3007.0--可以让你用指纹扫描器解锁你的 Chromebook 笔记本电脑. 可以在你的 Chromebook 笔记电脑上登录网址 chrome://flags,然后激活新的功能 Quick Unlock(快速解锁).在这里,你可以设置这项新的功能,然后通过识别你的指纹来解锁 Chromebook,只要你已经录入你的指纹. 你可以先找到

分享一些iOS开发实用的小技巧_IOS

1.设置navigationbar title颜色 UIColor *whiteColor = [UIColor whiteColor]; NSDictionary *dic = [NSDictionary dictionaryWithObject:whiteColor forKey:NSForegroundColorAttributeName]; [self.navigationController.navigationBar setTitleTextAttributes:dic]; 2.获取

iOS开发之枚举用法小结_IOS

前言 Enum,也就是枚举,从C语言开始就有了,C++.Java.Objective-C.Swift这些语言,当然都有对应的枚举类型,功能可能有多有少,但是最核心的还是一个-规范的定义代码中的状态.选项等"常量". 举个例子,我们想要在开发中根据四季的变化做不同的操作,我们首先想到的可能会是定义一个int型变量,通过为该变量赋不同的值来表示四季(e.g. 1为春天,2为夏天,3为秋天,4为冬天).但是,对于阅读该份代码的人来讲,他们并不能在短时间内就明白数字1234所代表的具体含义.这

iOS开发基础之C语言_IOS

为何学习iOS开发要先学C语言呢,学习c语言对ios开发有何作用. 现在越来越多的iOS开发兴趣爱好者投入到了iOS培训中,有的是已经在职的员工,有的是还在就读的学生,还有一些是完全零基础的同学,那么对于他们来说就要一切从基础开始学,首先从C语言学起. 因为C语言是一门语言基础,因具备简洁.灵活等特点而被广泛应用,在多种开发环境中都起着重要作用.那么,为什么学习iOS开发要先学C语言呢? 因为在iOS开发中,会经常使用C语言和汇编的,而汇编语言相对而言要生涩繁琐些,C语言因此便成为程序员的首选.

iOS开发网络编程之断点续传_IOS

前言 网络下载是我们在项目中经常要用到的功能,如果是小文件的下载,比如图片和文字之类的,我们可以直接请求源地址,然后一次下载完毕.但是如果是下载较大的音频和视频文件,不可能一次下载完毕,用户可能下载一段时间,关闭程序,回家接着下载.这个时候,就需要实现断点续传的功能.让用户可以随时暂停下载,下次开始下载,还能接着上次的下载的进度. 今天我们来看看如何自己简单的封装一个断点续传的类,实现如下功能.     1.使用者只需要调用一个接口即可以下载,同时可以获取下载的进度.     2.下载成功,可以

iOS开发 正则运算详细介绍_IOS

iOS开发 正则运算 1. 正则运算意义 regular expression 描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串.将匹配的子串做替换或者从某个串中取出符合某个条件的子串等,而在iOS 中我们多数用于检查字符串是否符合规则 2. 常用正则表达式 (如果想自己动手写出符合需求的正则表达式,只需了解 4 中的符号意义) (1).用户名 "^[a-zA-Z][a-zA-Z0-9_]{5,15}$" (由6-16位字母数字下划线组成,第一位不能为数字或下划线) [a

IOS开发第三方语音-微信语音_IOS

微信只能开发平台http://pr.weixin.qq.com/,里面包含了微信语音和图像,集成很简单,下载方demo后会有个文档,按照流程来(因为它只提供了真机的.a文件,所以只能用真机哦,不然会报错) 先用个有UI界面的sdk 1.装上sdk,引入相关包 2.设置 Build Settings C++ Standard Library: libstdc++ 或 Compiler Default Compile Sources As: Objective-C++ 或 将使用 SDK 的文件扩展

iPhone/iPad开发通过LocalNotification实现iOS定时本地推送功能_IOS

通过iOS的UILocalNotification Class可以实现本地app的定时推送功能,即使当前app是后台关闭状态.  可以实现诸如,设置app badgenum,弹出一个alert,播放声音等等,实现很简单  UILocalNotification *notification=[[UILocalNotification alloc] init]; if (notification!=nil) { NSDate *now=[NSDate new]; notification.fireD