CoreBluetooth - TouchID应用

支持系统和机型:

  iOS系统的指纹识别功能最低支持的机型为iPhone 5s,最低支持系统为iOS 8

  虽然安装iOS 7系统的5s机型可以使用系统提供的指纹解锁功能,但由于API并未开放,所以理论上第三方软件不可使用。

依赖框架

LocalAuthentication.framework
#import <LocalAuthentication/LocalAuthentication.h>

注意事项

iOS 8以下版本适配时,务必进行API验证,避免调用相关API引起崩溃。

if(iOS8){xxx} // 系统版本验证

if ([myContext canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&authError])

使用类

LAContext 指纹验证操作对象

操作流程

  • 判断系统版本,iOS 8及以上版本执行-(void)authenticateUser方法,
  • 方法自动判断设备是否支持和开启Touch ID。

代码示例

  1 #import "ViewController.h"
  2 #import "MBProgressHUD+MJ.h"
  3 #import <LocalAuthentication/LocalAuthentication.h>
  4
  5 #define iOS8 ([UIDevice currentDevice].systemVersion.doubleValue >= 8.0)
  6
  7
  8 @interface ViewController ()
  9 - (IBAction)clickMethod:(id)sender;
 10
 11 @end
 12
 13 @implementation ViewController
 14
 15 - (void)viewDidLoad {
 16     [super viewDidLoad];
 17     // Do any additional setup after loading the view, typically from a nib.
 18 }
 19
 20
 21 - (IBAction)clickMethod:(id)sender {
 22
 23     if (!iOS8) { // iOS8以后支持 touchID
 24         // HUD 提示
 25         [MBProgressHUD showError:@"当前系统不支持touchID"];
 26         return;
 27     }
 28
 29     // 调用touchID
 30     [self touchIDShow];
 31
 32 }
 33
 34 - (void)touchIDShow
 35 {
 36     // 创建指纹校验对象
 37     LAContext *context = [[LAContext alloc] init];
 38
 39     NSError *error1 = nil;
 40     if ([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error1]) {
 41         // 弹出验证
 42         [context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:@"touchID error" reply:^(BOOL success, NSError * _Nullable error) {
 43
 44             if (success) { // 验证成功
 45                 NSLog(@"success");
 46             }else{
 47                 switch (error.code) {
 48                     case LAErrorSystemCancel:
 49                     {
 50                         NSLog(@"Authentication was cancelled by the system");
 51                         //切换到其他APP,系统取消验证Touch ID
 52                         break;
 53                     }
 54                     case LAErrorUserCancel:
 55                     {
 56                         NSLog(@"Authentication was cancelled by the user");
 57                         //用户取消验证Touch ID
 58                         break;
 59                     }
 60                     case LAErrorUserFallback:
 61                     {
 62                         NSLog(@"User selected to enter custom password");
 63                         [[NSOperationQueue mainQueue] addOperationWithBlock:^{
 64                             //用户选择输入密码,切换主线程处理
 65                         }];
 66                         break;
 67                     }
 68                     default:
 69                     {
 70                         [[NSOperationQueue mainQueue] addOperationWithBlock:^{
 71                             //其他情况,切换主线程处理
 72                         }];
 73                         break;
 74                     }
 75                 }
 76                  NSLog(@"\n%s\n ---line=%d\n -- error=%@\n", __FUNCTION__, __LINE__, error.localizedDescription);
 77             }
 78         }];
 79
 80     }else{
 81         switch (error1.code) {
 82             case LAErrorTouchIDNotEnrolled:
 83                 NSLog(@"LAErrorTouchIDNotEnrolled");
 84                 break;
 85
 86
 87             case LAErrorPasscodeNotSet:
 88                 NSLog(@"LAErrorPasscodeNotSet"); // 此处触发showPasscodeResetAlert方法
 89                 break;
 90
 91             default:
 92                 NSLog(@"Touch ID is unaviliable");
 93                 break;
 94         }
 95     }
 96     /*
 97      typedef NS_ENUM(NSInteger, LAError)
 98      {
 99      //授权失败
100      LAErrorAuthenticationFailed = kLAErrorAuthenticationFailed,
101
102      //用户取消Touch ID授权
103      LAErrorUserCancel           = kLAErrorUserCancel,
104
105      //用户选择输入密码
106      LAErrorUserFallback         = kLAErrorUserFallback,
107
108      //系统取消授权(例如其他APP切入)
109      LAErrorSystemCancel         = kLAErrorSystemCancel,
110
111      //系统未设置密码
112      LAErrorPasscodeNotSet       = kLAErrorPasscodeNotSet,
113
114      //设备Touch ID不可用,例如未打开
115      LAErrorTouchIDNotAvailable  = kLAErrorTouchIDNotAvailable,
116
117      //设备Touch ID不可用,用户未录入
118      LAErrorTouchIDNotEnrolled   = kLAErrorTouchIDNotEnrolled,
119      } NS_ENUM_AVAILABLE(10_10, 8_0);
120
121      */
122
123     [self dealWithError:error1];
124 }
125
126
127 - (void)dealWithError:(NSError *)error
128 {
129     if (error) {
130         NSLog(@"error = %@", error.localizedDescription);
131     }
132 }
133 @end
时间: 2024-11-10 08:36:07

CoreBluetooth - TouchID应用的相关文章

iOS 之(个人隐私钱包调用系统TouchID指纹锁验证)

// //  ViewController.m //  TouchID指纹验证 // //  Created by apple on 16/9/18. //  Copyright © 2016年 apple. All rights reserved. // #import "ViewController.h" #import "HomeViewController.h"//跳转成功后需要跳转到的视图控制器 #import <LocalAuthenticatio

iOS8指纹识别TouchID

苹果在2014年6月3日的WWDC2014开幕式上推出了新版iOS8系统,界面上iOS8与iOS7相比变化不大,只是在功能方面进行了完好.iOS8通知中心更加强大,支持消息直接回复操作,并支持QuickType和第三方输入法.短信功能改进明显,支持群聊.发送语音.视频,分享地理位置等.从终端用户的角度看.iOS8的很多新功能早已出如今其它平台中.iOS8会向第三方软件开放TouchID訪问,这意味着能够使用该感应器登陆银行应用等. 第三方应用能够使用TouchID接口,意味着未来的非常多应用都能

IOS8 TouchID使用介绍

本文转载至 http://blog.csdn.net/jinkaiouyang/article/details/35555123 IOS8将指纹识别技术开放出来了.我们能够利用用户设置的touch ID来进行用户鉴权. TouchID的API主要集成在LocalAuthentication.framework中.将改framework加入到工程中,并且需要iPhone5S和IOS8系统的支持,就能使用TouchID的API 了. TouchID的API非常简单: 1.使用之前,需要先判断Touc

CoreBluetooth framework

CoreBluetooth Framework 本文主要是介绍iphone.ipad设备之间相互通信的蓝牙知识. 1.相关的类 在CoreBluetooth框架中,有两个主要的角色:周边和中央(Peripheral and Central),整个框架都是围绕这两个主要角色设计的,他两之间有一系列的回调交换数据. 周边(Peripheral)是生成或者保存了数据的设备,中央(Central)是使用这些数据的设备.所有可用的iOS设备可以作为周边(Peripheral),也可以作为中央(Centra

iOS CoreBluetooth 教程 蓝牙

去App Store搜索并下载"LightBlue"这个App,对调试你的app和理解Core Bluetooth会很有帮助. ================================ Demo下载地址:http://download.csdn.net/detail/jimoduwu/7146875 ================================ Core Bluetooth for iOS 6 CoreBluetooth的API是基于BLE4.0的标准的.这

iOS8使用TouchID

iOS8新增了LocalAuthentication框架,用于TouchID的授权使用.亲測,眼下须要用户的设备支持指纹识别并已设置锁屏,并且实际測试过程中反馈比較慢.不能直接跟第三方账号password绑定,假设须要实现第三方应用直接指纹识别登录,须要在本地存储账号信息,指纹识别通过之后再从本地读取账号信息登录.总之.眼下的指纹识别是跟设备.设备锁屏password绑定的. 測试代码: ///使用TouchID -(void)usingTouchID { LAContext *myContex

CoreBluetooth——IOS蓝牙4.0使用心得

原文链接:http://m.blog.csdn.net/article/details?plg_nld=1&id=51014318&plg_auth=1&plg_uin=1&plg_usr=1&plg_vkey=1&plg_nld=1&plg_d 文章出处http://blog.csdn.net/xgcyangguang 所做的东西是通过手机/pad与蓝牙4.0的设备进行连接,之后设备上按对应的按键我们会收到对应的数值.首先需要和做蓝牙4.0的同事沟

ios CoreBluetooth 警告 is being dealloc&#39;ed while pending connection

ios CoreBluetooth 警告 is being dealloc'ed while pending connection CoreBluetooth[WARNING] <CBPeripheral: 0x1780a53a0 identifier = 3F8E69BD-BE87-215F-3ADD-64AE670BD750, Name = "Alert Notifictaion", state = connecting> is being dealloc'ed whi

corebluetooth

去App Store搜索并下载"LightBlue"这个App,对调试你的app和理解Core Bluetooth会很有帮助. ================================ Core Bluetooth for iOS 6 CoreBluetooth的API是基于BLE4.0的标准的.这个框架涵盖了BLE标准的所有细节.仅仅只有新的iOS设备和Mac是和BLE标准兼容的:iPhone4S,iPhone5,MacMini,New iPad,MacBook Air,Ma