指纹验证

#import <LocalAuthentication/LocalAuthentication.h>

 

- (IBAction)authenticateButtonTapped:(id)sender {

    LAContext *context = [[LAContext alloc] init];

    context.localizedFallbackTitle = @"输入密码";

    NSError *error = nil;

    

    if ([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error]) {

        

        [context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics

                localizedReason:@"您是这设备的所有者吗?"

                          reply:^(BOOL success, NSError *error) {

                              if (success) {

                                  dispatch_async (dispatch_get_main_queue(), ^{

                                      

                                      UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Success"

                                                                                      message:@"你是设备主人。"

                                                                                     delegate:nil

                                                                            cancelButtonTitle:@"Ok"

                                                                            otherButtonTitles:nil];

                                      [alert show];

                                  });

                                  

                              }else{

                                  

                                  

                                  /*

                                   // 用户未提供有效证书,(3次机会失败 --身份验证失败)

                                   LAErrorAuthenticationFailed = kLAErrorAuthenticationFailed,

                                   

                                   // 认证被取消,(用户点击取消按钮)

                                   LAErrorUserCancel           = kLAErrorUserCancel,

                                   

                                   // 认证被取消,用户点击回退按钮(输入密码)

                                   LAErrorUserFallback         = kLAErrorUserFallback,

                                   

                                   // 身份验证被系统取消,(比如另一个应用程序去前台)

                                   LAErrorSystemCancel         = kLAErrorSystemCancel,

                                   

                                   // 身份验证无法启动,因为密码在设备上没有设置。

                                   LAErrorPasscodeNotSet       = kLAErrorPasscodeNotSet,

                                   

                                   // 身份验证无法启动,因为触摸ID在设备上不可用。

                                   LAErrorTouchIDNotAvailable  = kLAErrorTouchIDNotAvailable,

                                   

                                   // 身份验证无法启动,因为没有登记的手指触摸ID 没有设置指纹密码时。

                                   LAErrorTouchIDNotEnrolled   = kLAErrorTouchIDNotEnrolled,

                                   **/

                                  switch (error.code) {

                                      case LAErrorAuthenticationFailed:

                                          NSLog(@"身份验证失败。");

                                          

                                          break;

                                          

                                      case LAErrorUserCancel:

                                          NSLog(@"用户点击取消按钮。");

                                          

                                          break;

                                          

                                      case LAErrorUserFallback:

                                          NSLog(@"用户点击输入密码。");

                                          

                                          break;

                                          

                                      case LAErrorSystemCancel:

                                          NSLog(@"另一个应用程序去前台");

                                          

                                          break;

                                          

                                      case LAErrorPasscodeNotSet:

                                          NSLog(@"密码在设备上没有设置");

                                          

                                          break;

                                          

                                      case LAErrorTouchIDNotAvailable:

                                          NSLog(@"触摸ID在设备上不可用");

                                          

                                          break;

                                          

                                      case LAErrorTouchIDNotEnrolled:

                                          NSLog(@"没有登记的手指触摸ID");

                                          

                                          break;

                                          

                                      default:

                                          NSLog(@"Touch ID没配置");

                                          

                                          break;

                                  }

                              }

                          }];

        

    } else {

        dispatch_async (dispatch_get_main_queue(), ^{

            

            UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"错误提示"

                                                            message:@"您的设备没有触摸ID."

                                                           delegate:nil

                                                  cancelButtonTitle:@"Ok"

                                                  otherButtonTitles:nil];

            [alert show];

        });

    }

    

}

原文地址:https://www.cnblogs.com/yinyakun/p/4225531.html