iOS指纹识别功能实践

作者: PandaXiong | 来源:发表于2016-05-29 19:31 被阅读171次

    iOS8 苹果开放了指纹验证功能,支持5s以上的机型。

    1.导入框架

    #import <LocalAuthentication/LocalAuthentication.h>
    

    2.定义几种可能性的block回调

    typedef void (^SuccessVerifyBlock) (BOOL success);//验证成功
    
    typedef void (^ErrorBlock) (NSError *error);//验证失败
    
    typedef void (^InputPwdBlock)(NSError *error);//验证失败输入密码
    
    typedef void (^DeviceNoSupportBlock)();//设备不支持
    

    3.编码

    + (void)verifyFingerPrintWithSuccessBlock:(SuccessVerifyBlock)block WithErrorBlock:(ErrorBlock)errorBlock WithInputPwdBlock:(InputPwdBlock)inputPwdBlock WithDeviceNoSupportBlock:(DeviceNoSupportBlock)deviceNoSupportBlock {
    
        LAContext *ctx = [[LAContext alloc]init];
    
        // 判断设备是否支持指纹识别
    
        if ([ctx canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:NULL]) {
    
            // 输入指纹 - 回调是异步的
    
            [ctx evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:DetailDescription reply:^(BOOL success, NSError *error) {
    
                // 1. 如果输入成功
    
                if (success) {
    
                    //成功
    
                    dispatch_async(dispatch_get_main_queue(), ^{
    
                        //验证成功回调
    
                        block(success);
    
                        
    
                    });
    
                    
    
                } else {
    
                    //指纹验证失败会弹出框,是否使用密码验证。
    
                    // 判断错误类型是否是主动自行输入密码
    
                    
    
                    if (error.code == LAErrorUserFallback) {
    
                        dispatch_async(dispatch_get_main_queue(), ^{
    
                            //密码验证方法
    
                            inputPwdBlock(error);
    
                            //跳转到登录页面登录
    
                            
    
                        });
    
                        
    
                    } else {
    
                        dispatch_async(dispatch_get_main_queue(), ^{
    
                            //指纹验证没有通过,没有点击用密码验证弹出框
    
                            errorBlock(error);
    
                            
    
                        });
    
                        
    
                    }
    
                    
    
                }
    
                
    
            }];
    
            
    
        } else {
    
            //设备不支持指纹识别
    
            deviceNoSupportBlock();
    
        }
    
        
    
    }
    

    相关文章

      网友评论

      • JaryWang:问下,指纹数据是怎么发给后台去验证识别的
        JaryWang:明白了 就是绑定手机的指纹验证,同个手机不同app的指纹识别同一份
        PandaXiong:@JaryWang 不是 这个是直接调用苹果的API 苹果返回你是否正确。这个只能验证当前使用这个手机的是本人。

      本文标题:iOS指纹识别功能实践

      本文链接:https://www.haomeiwen.com/subject/aqyqdttx.html