美文网首页
指纹解锁

指纹解锁

作者: 西瓜皮奥特曼 | 来源:发表于2017-07-12 16:29 被阅读4次

    原文地址:http://blog.csdn.net/personsky/article/details/52413501

    实现过程

    1.首先引入指纹解锁必须的头文件

    1

    LocalAuthentication/LocalAuthentication.h
    

    2.了解下主要的两个方法

    这个方法是判断设备是否支持TouchID的。

    1

    2- (BOOL)canEvaluatePolicy:(LAPolicy)policy error:(NSError * __autoreleasing *)
    
    error__attribute__((swift_error(none)));
    

    这个是用来验证TouchID的,会有弹出框出来。

    1

    2

    3- (void)evaluatePolicy:(LAPolicy)policy
    
    localizedReason:(NSString *)localizedReason
    
    reply:(void(^)(BOOLsuccess, NSError * __nullable error))reply;
    

    3.新建LAContext对象

    主要的属性设置

    localizedFallbackTitle:用于设置左边的按钮的名称,默认是Enter Password.
    
    localizedReason:用于设置提示语,表示为什么要使用Touch ID
    

    /创建LAContext

    LAContext *context = [LAContextnew];//这个属性是设置指纹输入失败之后的弹出框的选项
    
    context.localizedFallbackTitle = @"没有忘记密码";
    

    4.主要回调方法,包括成功以及失败的

    //创建LAContext

    LAContext *context = [LAContext new]; //这个属性是设置指纹输入失败之后的弹出框的选项
    
    context.localizedFallbackTitle = @"没有忘记密码";
    
    NSError *error = nil;
    
    if ([contextcanEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics
    
    error:&error]) {
    
    NSLog(@"支持指纹识别");
    
    [contextevaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics
    
    localizedReason:@"指纹解锁"reply:^(BOOL success, NSError * _Nullable error) {
    
    if (success) {
    
    NSLog(@"验证成功刷新主界面");
    
    _canPush = YES;
    
    }else{
    
    NSLog(@"%@",error.localizedDescription);
    
    switch (error.code) {
    
    case LAErrorSystemCancel:
    
    {
    
    NSLog(@"系统取消授权,如其他APP切入");
    
    break;
    
    }
    
    case LAErrorUserCancel:
    
    {
    
    NSLog(@"用户取消验证TouchID");
    
    break;
    
    }
    
    case LAErrorAuthenticationFailed:
    
    {
    
    NSLog(@"授权失败");
    
    break;
    
    }
    
    case LAErrorPasscodeNotSet:
    
    {
    
    NSLog(@"系统未设置密码");
    
    break;
    
    }
    
    case LAErrorTouchIDNotAvailable:
    
    {
    
    NSLog(@"设备Touch ID不可用,例如未打开");
    
    break;
    
    }
    
    case LAErrorTouchIDNotEnrolled:
    
    {
    
    NSLog(@"设备Touch ID不可用,用户未录入");
    
    break;
    
    }
    
    case LAErrorUserFallback:
    
    {
    
    [[NSOperationQueue mainQueue]addOperationWithBlock:^{
    
    NSLog(@"用户选择输入密码,切换主线程处理");
    
    }];
    
    break;
    
    }
    
    default:
    
    {
    
    [[NSOperationQueue mainQueue]addOperationWithBlock:^{
    
    NSLog(@"其他情况,切换主线程处理");
    
    }];
    
    break;
    
    }
    
    }
    
    }
    
    }];
    
    }else{
    
    NSLog(@"不支持指纹识别");
    
    switch (error.code) {
    
    case LAErrorTouchIDNotEnrolled:
    
    {
    
    NSLog(@"TouchID is notenrolled");
    
    break;
    
    }
    
    case LAErrorPasscodeNotSet:
    
    {
    
    NSLog(@"A passcode has not beenset");
    
    break;
    
    }
    
    default:
    
    {
    
        NSLog(@"TouchID not available");
    
        break;
    
    }
    
    }
    
        NSLog(@"%@",error.localizedDescription);
    
    }

    相关文章

      网友评论

          本文标题:指纹解锁

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