一聚教程网:一个值得你收藏的教程网站

热门教程

简单实现iOS指纹解锁(TouchID)

时间:2022-06-26 06:05:48 编辑:袖梨 来源:一聚教程网

1、首先,引入依赖框架 LocalAuthentication.framework

 代码如下复制代码
#import

2、然后,判断系统是否为iOS8及以上

 

 代码如下复制代码

//iOS8.0后才支持指纹识别接口

 if([UIDevice currentDevice].systemVersion.floatValue<8.0) {

  return;

 }

 

3、最后,在APP启动时调用以下方法即可完成指纹解锁的全部功能集成

 

 代码如下复制代码

- (void)evaluateAuthenticate

{

 //创建LAContext

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

 NSError* error = nil;

 NSString* result = @"请验证已有指纹";

  

 //首先使用canEvaluatePolicy 判断设备支持状态

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

  //支持指纹验证

  [context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:result reply:^(BOOL success, NSError *error) {

   if(success) {

    //验证成功,主线程处理UI

   }

   else

   {

    NSLog(@"%@",error.localizedDescription);

    switch(error.code) {

     caseLAErrorSystemCancel:

     {

      //系统取消授权,如其他APP切入

      break;

     }

     caseLAErrorUserCancel:

     {

      //用户取消验证Touch ID

      break;

     }

     caseLAErrorAuthenticationFailed:

     {

      //授权失败

      break;

     }

     caseLAErrorPasscodeNotSet:

     {

      //系统未设置密码

      break;

     }

     caseLAErrorTouchIDNotAvailable:

     {

      //设备Touch ID不可用,例如未打开

      break;

     }

     caseLAErrorTouchIDNotEnrolled:

     {

      //设备Touch ID不可用,用户未录入

      break;

     }

     caseLAErrorUserFallback:

     {

      [[NSOperationQueue mainQueue] addOperationWithBlock:^{

       //用户选择输入密码,切换主线程处理

        

      }];

      break;

     }

     default:

     {

      [[NSOperationQueue mainQueue] addOperationWithBlock:^{

       //其他情况,切换主线程处理

      }];

      break;

     }

    }

   }

  }];

 }

 else

 {

  //不支持指纹识别,LOG出错误详情

  NSLog(@"不支持指纹识别");

   

  switch(error.code) {

   caseLAErrorTouchIDNotEnrolled:

   {

    NSLog(@"TouchID is not enrolled");

    break;

   }

   caseLAErrorPasscodeNotSet:

   {

    NSLog(@"A passcode has not been set");

    break;

   }

   default:

   {

    NSLog(@"TouchID not available");

    break;

   }

  }

   

  NSLog(@"%@",error.localizedDescription);

 }

}

 

热门栏目