iOS8中使用TouchID校验

在iOS8中,开发者们可使用向第三方应用开放了Touch ID权限的API,以便他们在应用中使用指纹认证来完成用户认证部分。

本文主要介绍如何在应用中集成Touch ID来校验用户的身份。

#import <LocalAuthentication/LocalAuthentication.h>这个库必须要Xcode6并且连接的是真机,才不会提示找不到的错误。 如果是模拟器会提示找不到这个库。

 

  1 - (IBAction)authenticateButtonTapped:(id)sender {
  2     LAContext *context = [[LAContext alloc] init];
  3     context.localizedFallbackTitle = @"输入密码";
  4     NSError *error = nil;
  5     
  6     if ([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error]) {
  7         
  8         [context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics
  9                 localizedReason:@"您是这设备的所有者吗?"
 10                           reply:^(BOOL success, NSError *error) {
 11                               if (success) {
 12                                   dispatch_async (dispatch_get_main_queue(), ^{
 13                                       
 14                                       UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Success"
 15                                                                                       message:@"你是设备主人。"
 16                                                                                      delegate:nil
 17                                                                             cancelButtonTitle:@"Ok"
 18                                                                             otherButtonTitles:nil];
 19                                       [alert show];
 20                                   });
 21                                   
 22                               }else{
 23                                   
 24                              
 25                               /*
 26                                // 用户未提供有效证书,(3次机会失败 --身份验证失败)。
 27                                LAErrorAuthenticationFailed = kLAErrorAuthenticationFailed,
 28                                
 29                                // 认证被取消,(用户点击取消按钮)。
 30                                LAErrorUserCancel           = kLAErrorUserCancel,
 31                                
 32                                // 认证被取消,用户点击回退按钮(输入密码)。
 33                                LAErrorUserFallback         = kLAErrorUserFallback,
 34                                
 35                                // 身份验证被系统取消,(比如另一个应用程序去前台)。
 36                                LAErrorSystemCancel         = kLAErrorSystemCancel,
 37                                
 38                                // 身份验证无法启动,因为密码在设备上没有设置。
 39                                LAErrorPasscodeNotSet       = kLAErrorPasscodeNotSet,
 40                                
 41                                // 身份验证无法启动,因为触摸ID在设备上不可用。
 42                                LAErrorTouchIDNotAvailable  = kLAErrorTouchIDNotAvailable,
 43                                
 44                                // 身份验证无法启动,因为没有登记的手指触摸ID。 没有设置指纹密码时。
 45                                LAErrorTouchIDNotEnrolled   = kLAErrorTouchIDNotEnrolled,
 46                                **/
 47                               switch (error.code) {
 48                                   case LAErrorAuthenticationFailed:
 49                                       NSLog(@"身份验证失败。");
 50                                    
 51                                       break;
 52                                       
 53                                   case LAErrorUserCancel:
 54                                       NSLog(@"用户点击取消按钮。");
 55                                    
 56                                       break;
 57                                       
 58                                   case LAErrorUserFallback:
 59                                       NSLog(@"用户点击输入密码。");
 60                                    
 61                                       break;
 62                                       
 63                                   case LAErrorSystemCancel:
 64                                       NSLog(@"另一个应用程序去前台");
 65                                   
 66                                       break;
 67                                       
 68                                   case LAErrorPasscodeNotSet:
 69                                       NSLog(@"密码在设备上没有设置");
 70                                     
 71                                       break;
 72                                       
 73                                   case LAErrorTouchIDNotAvailable:
 74                                       NSLog(@"触摸ID在设备上不可用");
 75                                   
 76                                       break;
 77                                       
 78                                   case LAErrorTouchIDNotEnrolled:
 79                                       NSLog(@"没有登记的手指触摸ID。");
 80                                 
 81                                       break;
 82                                       
 83                                   default:
 84                                       NSLog(@"Touch ID没配置");
 85                                  
 86                                       break;
 87                               }
 88                             }
 89                         }];
 90         
 91     } else {
 92         dispatch_async (dispatch_get_main_queue(), ^{
 93             
 94             UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"错误提示"
 95                                                             message:@"您的设备没有触摸ID."
 96                                                            delegate:nil
 97                                                   cancelButtonTitle:@"Ok"
 98                                                   otherButtonTitles:nil];
 99             [alert show];
100         });
101     }
102   
103 }

其中:

(1)localizedFallbackTitle:用于设置左边的按钮的名称,默认是输入密码。

(2)localizedReason:用于设置提示语,表示为什么要使用Touch ID,如代码中@"您是这设备的所有者吗?"

 官方的API就是简单,简简单单几句话 就可以。

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。