• 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(@"不支持指纹");
            
        }
        
    }

    效果图如下:

  • 相关阅读:
    实现微信朋友圈点击评论按钮时cell上移
    UITableView的横向使用
    用Xcode6的Leaks检测内存泄漏
    IOS8设备连接XCODE6真机调试报错"Could not inspect the application package"
    Implicit declaration of function 'ether_ntoa' is invalid in C99
    .xcodeprok cannot be opened because the project file cannot be parsed
    根据图片的链接获取图片的宽高
    关于UIWebView设置高度自适应的问题
    reason: 'data parameter is nil'
    CSS图标文字对齐和表单输入框文字对齐兼容
  • 原文地址:https://www.cnblogs.com/LiuChengLi/p/5334015.html
Copyright © 2020-2023  润新知