TouchID工具类

引用

#import <LocalAuthentication/LocalAuthentication.h>

typedef void(^TouchIDFinish)(BOOL success, NSString * strAlter ,LAError errorCode);

判断

+(BOOL)isSupportTouchID{
    //创建LAContext
    LAContext* context = [[LAContext alloc] init];
    NSError* error = nil;
    if ([[[UIDevice currentDevice]systemVersion] floatValue]>=8.0) {
        return [context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error];
    }else{
        return NO;
    }
}

初始化并回调

+(void)initWithNeedStr:(NSString *)needStr fallbackTitle:(NSString *)fallbackTitle touchID:(TouchIDFinish)touchFinish{
    if (touchFinish) {
        //创建LAContext
        LAContext *context = [LAContext new];
        
        //这个属性是设置指纹输入失败之后的弹出框的选项
        context.localizedFallbackTitle = fallbackTitle;
        
        NSError *error = nil;
        if ([self isSupportTouchID]) {
            NSLog(@"支持指纹识别");
            [context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:needStr reply:^(BOOL success, NSError * _Nullable error) {
                NSString *strAlter = @"";
                if (success) {
                    strAlter = @"验证成功 刷新主界面";
                }else{
                    NSLog(@"%@",error.localizedDescription);
                    switch (error.code) {
                        case LAErrorSystemCancel:
                        {
                            strAlter = @"系统取消授权,如其他APP切入";
                            break;
                        }
                        case LAErrorUserCancel:
                        {
                            strAlter = @"用户取消验证Touch ID";
                            break;
                        }
                        case LAErrorAuthenticationFailed:
                        {
                            strAlter = @"授权失败";
                            break;
                        }
                        case LAErrorPasscodeNotSet:
                        {
                            strAlter = @"系统未设置密码";
                            break;
                        }
                        case LAErrorTouchIDNotAvailable:
                        {
                            strAlter = @"设备Touch ID不可用,例如未打开";
                            break;
                        }
                        case LAErrorTouchIDNotEnrolled:
                        {
                            strAlter = @"设备Touch ID不可用,用户未录入";
                            break;
                        }
                        case LAErrorUserFallback:
                        {
                            strAlter = @"用户选择输入密码,切换主线程处理";
                            break;
                        }
                        default:
                        {
                            strAlter = @"其他情况,切换主线程处理";
                            break;
                        }
                    }
                }
                touchFinish(success,strAlter,error.code);
            }];
        }else{
            NSLog(@"不支持指纹识别");
            NSString *strAlter = @"";
            switch (error.code) {
                case LAErrorTouchIDNotEnrolled:
                {
                    strAlter = @"TouchID is not enrolled";
                    break;
                }
                case LAErrorPasscodeNotSet:
                {
                    strAlter = @"A passcode has not been set";
                    break;
                }
                default:
                {
                    strAlter = @"TouchID not available";
                    break;
                }
            }
            touchFinish(0,strAlter,error.code);
        }
    }
}

调用

    if ([TouchIDHelper isSupportTouchID]) {
        [TouchIDHelper initWithNeedStr:@"请按home键指纹解锁" fallbackTitle:@"没有忘记密码" touchID:^(BOOL success, NSString *strAlter, LAError errorCode) {
            if (success) {
                NSLog(@"请求网络登录");
            }else{
                //比较常见的
                NSLog(@"strAlter:%@",strAlter);
                if (errorCode==LAErrorAuthenticationFailed) {
                    NSLog(@"重复验证指纹失效");
                }else if (errorCode==LAErrorUserCancel){
                    NSLog(@"用户点击取消 一般什么都不做");
                }else if (errorCode==LAErrorUserFallback){
                    NSLog(@"用户第一次指纹失效 之后点击进入到密码登录");
                }
            }
        }];
    }






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值