zoukankan      html  css  js  c++  java
  • 指纹验证

    #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];

            });

        }

        

    }

  • 相关阅读:
    知识全聚集 .Net Core 技术突破 | 如何实现一个模块化方案一
    企业项目实战 .Net Core + Vue/Angular 分库分表日志系统六 | 最终篇-通过AOP自动连接数据库-完成日志业务
    企业项目实战 .Net Core + Vue/Angular 分库分表日志系统五 | 完善业务自动创建数据库
    企业项目实战 .Net Core + Vue/Angular 分库分表日志系统四 | 强化设计方案
    企业项目实战 .Net Core + Vue/Angular 分库分表日志系统三 | 控制反转搭配简单业务
    企业项目实战 .Net Core + Vue/Angular 分库分表日志系统二 | 简单的分库分表设计
    SDN+DPI文献阅读(2)
    SDN中的Heavy-Hitter测量文献阅读
    DPI技术简介
    SDN+DPI文献阅读
  • 原文地址:https://www.cnblogs.com/yinyakun/p/4225531.html
Copyright © 2011-2022 走看看