首页 > 学院 > 开发设计 > 正文

iOS8中使用TouchID校验

2019-11-14 19:39:09
字体:
来源:转载
供稿:网友

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


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表