zoukankan      html  css  js  c++  java
  • iOS开发——Touch ID 指纹识别

       项目中为了安全性,一般使用密码或iPhone手机的指纹识别Touch ID。

       第一步,判断系统是否支持,iOS8.0及以上才支持。

       第二步,判断手机是否支持,带Touch ID的手机iPhone5s及以上才支持

      代码如下:

    - (void)openTouchID{
        
        if ([UIDevice currentDevice].systemVersion.floatValue < 8.0) {
            
            NSLog(@"系统版本过低,不支持");
            return;
        }
        
        
        //创建安全验证对象
        LAContext * ctx = [[LAContext alloc]init];
        
        //判断是否支持密码验证
        /**
         *LAPolicyDeviceOwnerAuthentication 手机密码的验证方式
         *LAPolicyDeviceOwnerAuthenticationWithBiometrics 指纹的验证方式
         */
        BOOL isEnable = [ctx canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:NULL];
        if (isEnable) {
            ctx.localizedFallbackTitle = @"";  // 去掉错误时显示【输入密码】
            [ctx evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:@"指纹验证" reply:^(BOOL success, NSError * _Nullable error) {
                
                
                if (success)
                {
                    //输入成功 存储状态
                  //  NSString *keyF = [NSString stringWithFormat:@"%@fingerKey",userInfomation().userId];
                  //  [[NSUserDefaults standardUserDefaults] setObject:@"1" forKey:keyF];
                  //  [[NSUserDefaults standardUserDefaults] synchronize];
                    
                    NSLog(@"指纹验证成功");
                    dispatch_async(dispatch_get_main_queue(), ^{
                        
                       
                            
                            // 进入风险评测
                           
    
                            
                  
                         
                      
                        
                    });
                    
                } else
                {
                    // 失败
                    dispatch_async(dispatch_get_main_queue(), ^{
                        NSLog(@"指纹验证失败----");
                        
                        NSLog(@"%@",error.localizedDescription);
                        switch (error.code) {
                            case LAErrorSystemCancel:
                            {
                                NSLog(@"Authentication was cancelled by the system");
                                //切换到其他APP,系统取消验证Touch ID
                                break;
                            }
                            case LAErrorUserCancel:
                            {
                                NSLog(@"Authentication was cancelled by the user");
                                //用户取消验证Touch ID
                                // 进入风险评测
                               // [self enterRiskEvaluation];
    
                                break;
                            }
                            case LAErrorAuthenticationFailed:
                            {
                                NSLog(@"指纹错误:LAErrorAuthenticationFailed");
                                //切换到其他APP,系统取消验证Touch ID
                                [self timesLimited];
                                break;
                            }
                            case LAErrorPasscodeNotSet:
                            {
                                NSLog(@"指纹错误:LAErrorPasscodeNotSet");
                               
                                break;
                            }
                            case LAErrorTouchIDNotAvailable:
                            {
                                NSLog(@"指纹错误:LAErrorTouchIDNotAvailable");
                                
                                
                                break;
                            }
                            case LAErrorTouchIDNotEnrolled:
                            {
                                NSLog(@"指纹错误:LAErrorTouchIDNotEnrolled");
                               
                                break;
                            }
                            case LAErrorTouchIDLockout:
                            {
                                NSLog(@"指纹错误:LAErrorTouchIDLockout");
                                
                               // [self timesLimited];
                                break;
                            }
                                
                            case LAErrorAppCancel:
                            {
                                NSLog(@"指纹错误:LAErrorAppCancel");
                               
                                break;
                            }
                            default:
                            {
                                // 次数受限
                               // [self timesLimited];
                                break;
                            }
                        }
                        
                        //......
                    
                    });
                    
                }
                
            }];
            
        }else{
            
            // 密码验证的方式(不支持指纹) 可加弹窗提示
            NSLog(@"不支持指纹");
            
        }
        
    }

    效果图如下:

  • 相关阅读:
    腾讯云通信 资料
    获取openid 的步骤
    微信公众号推送通知接口
    患者接收医生的消息通知完整流程(微信公众号的界面)
    阿里im即时通讯 h5 demo
    微信微信JS-SDK 6.0.2 填坑笔记
    2018秋季寒假作业1-介绍自己
    勿忘初心
    Ubuntu中安装eclipse
    vim的常用指令
  • 原文地址:https://www.cnblogs.com/LiuChengLi/p/5334015.html
Copyright © 2011-2022 走看看