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就是简单,简简单单几句话 就可以。

你可能感兴趣的:(touch)