转载

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

正文到此结束
Loading...