TouchID 指纹登录

59 篇文章 0 订阅
7 篇文章 0 订阅

注:接入指纹验证之前确保您的设备是否支持 TouchID 功能并能正常使用的设备(iPhone 5s 及以上)。


#import "ViewController.h"
#import <LocalAuthentication/LocalAuthentication.h>   //需要导入这个库文件

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {

    [super viewDidLoad];

    if ([[self.navigationController.viewControllers firstObject] isEqual:self]) {
        self.navigationItem.title = @"点击调用指纹识别";
    }
}

- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {

    [self touch];
}

- (void)touch {

    if ([[self.navigationController.viewControllers firstObject] isEqual:self]) {
        self.navigationItem.title = @"指纹验证";

        //定义一个alter按钮
        LAContext *context = [LAContext new]; //这个属性是设置指纹输入失败之后的弹出框的选项
        context.localizedFallbackTitle = @"输入密码"; // 按钮的标题
        NSError *error = nil; 

        //判断用户的手机是否支持指纹
        if ([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics
                                 error:&error]) {

            NSLog(@"支持指纹识别");

            [context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics
                    localizedReason:@"指纹登录"
                              reply:^(BOOL success, NSError * _Nullable error) {
                                //这里是指纹验证之后返回信息
                                //只返回 success 值为 TRUE 或 FALSE
                if (success) {

                    NSLog(@"验证成功 你可以登录了 Go Go");
                } else {

                    NSLog(@"%@",error.localizedDescription);
                    switch (error.code) {
                        case LAErrorSystemCancel: {

                            NSLog(@"系统取消授权,如其他APP切入");
                            break;
                        }
                        case LAErrorUserCancel: {

                            NSLog(@"用户取消验证Touch ID");
                            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 not enrolled");
                    break;
                }
                case LAErrorPasscodeNotSet: {

                    NSLog(@"A passcode has not been set");
                    break;
                }
                default: {

                    NSLog(@"TouchID not available");
                    break;
                }
            }

            NSLog(@"%@",error.localizedDescription);
        }
    }

}


- (void)didReceiveMemoryWarning {

    [super didReceiveMemoryWarning];
}

@end

项目源码请点击这里

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值