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

 

 

 

效果图如下:

 

转载于:https://www.cnblogs.com/LiuChengLi/p/5334015.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值