源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

浅析IOS开发TouchID指纹解锁功能

  • 时间:2020-12-29 18:38 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:浅析IOS开发TouchID指纹解锁功能
[b]效果图如下[/b] [img]http://files.jb51.net/file_images/article/201609/201691114535829.jpg?20168111463[/img] [b]实现过程[/b] [b]1.首先引入指纹解锁必须的头文件[/b]
#import <LocalAuthentication/LocalAuthentication.h>
[b]2.了解下主要的两个方法[/b] 这个方法是判断设备是否支持TouchID的。
- (BOOL)canEvaluatePolicy:(LAPolicy)policy error:(NSError * __autoreleasing *)error __attribute__((swift_error(none)));
这个是用来验证TouchID的,会有弹出框出来。
- (void)evaluatePolicy:(LAPolicy)policy
  localizedReason:(NSString *)localizedReason
     reply:(void(^)(BOOL success, NSError * __nullable error))reply;
[b]3.新建LAContext对象[/b] 主要的属性设置 [code]localizedFallbackTitle[/code]:用于设置左边的按钮的名称,默认是Enter Password. [code]localizedReason[/code]:用于设置提示语,表示为什么要使用Touch ID [img]http://files.jb51.net/file_images/article/201609/201691114913783.jpg?201681114927[/img] 解锁失败界面
 //创建LAContext
 LAContext *context = [LAContext new];

 
 //这个属性是设置指纹输入失败之后的弹出框的选项
 context.localizedFallbackTitle = @"没有忘记密码";
[b]4.主要回调方法,包括成功以及失败的[/b]
NSError *error = nil;
 if ([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error]) {
  NSLog(@"支持指纹识别");
  [context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:@"指纹解锁" reply:^(BOOL success, NSError * _Nullable error) {
   if (success) {
    NSLog(@"验证成功 刷新主界面");
   }else{
    NSLog(@"%@",error.localizedDescription);
    switch (error.code) {
     case LAErrorSystemCancel:
     {
      NSLog(@"系统取消授权,如其他APP切入");
      break;
     }
     case LAErrorUserCancel:
     {
      NSLog(@"用户取消验证Touch ID");
      break;
     }
     case LAErrorAuthenticationFailed:
     {
      NSLog(@"授权失败");
      break;
     }
     case LAErrorPasscodeNotSet:
     {
      NSLog(@"系统未设置密码");
      break;
     }
     case LAErrorTouchIDNotAvailable:
     {
      NSLog(@"设备Touch ID不可用,例如未打开");
      break;
     }
     case LAErrorTouchIDNotEnrolled:
     {
      NSLog(@"设备Touch ID不可用,用户未录入");
      break;
     }
     case LAErrorUserFallback:
     {
      [[NSOperationQueue mainQueue] addOperationWithBlock:^{
       NSLog(@"用户选择输入密码,切换主线程处理");
      }];
      break;
     }
     default:
     {
      [[NSOperationQueue mainQueue] addOperationWithBlock:^{
       NSLog(@"其他情况,切换主线程处理");
      }];
      break;
     }
    }
   }
  }];
 }else{
  NSLog(@"不支持指纹识别");
  switch (error.code) {
   case LAErrorTouchIDNotEnrolled:
   {
    NSLog(@"TouchID is not enrolled");
    break;
   }
   case LAErrorPasscodeNotSet:
   {
    NSLog(@"A passcode has not been set");
    break;
   }
   default:
   {
    NSLog(@"TouchID not available");
    break;
   }
  }

  NSLog(@"%@",error.localizedDescription);
 }
[b]总结[/b] 到这里指纹解锁功能几乎就算完成,使用确实很简单,因为苹果都已经给我们做好一切,对我们开发者来说就很轻松了。教程写的很简陋,希望大家多多包涵,如果有疑问大家可以留言交流。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部