天天看点

iOS Touch ID指纹识别技术简介 —— HERO博客

Touch ID简介:

       苹果公司在iPhone 5S手机中推出了指纹识别功能,提高手机安全性的同时也方便了用户操作。其功能是通过Touch ID实现的,从iOS 8系统开始,苹果开发一些Touch ID的API使得开发人员可以在自己的应用程序中调用指纹识别功能。

       Touch ID功能就是指纹识别密码。使用指纹识别功能需要先进入设置—Touch ID 与密码中根据提示添加指纹。

       从iOS 8系统开始开放了Touch ID的验证接口功能,在应用程序中可以判断输入的Touch ID是否设置持有者的Touch ID。

Touch ID使用:

       创建一个iOS工程项目。           

iOS Touch ID指纹识别技术简介 —— HERO博客

       打开工程的General — Linked Frameworks and Libraries面板,单机“+”按钮添加“LocalAuthentication.framework”框架,如图26-1所示。

       编写程序时导入“LocalAuthentication.framework”框架的头文件:#import <LocalAuthentication/LocalAuthentication.h>。

       写了一个简单的测试Touch ID的例子,效果图如下:(若图片不清楚可右键将图片保存本地再放大看)

iOS Touch ID指纹识别技术简介 —— HERO博客

       下面贴上代码:

#import <UIKit/UIKit.h>

@interface HWTouchIDTestVC : UIViewController

@end


#import "HWTouchIDTestVC.h"
#import <LocalAuthentication/LocalAuthentication.h>

@interface HWTouchIDTestVC ()

@property (nonatomic, weak) UILabel *label;

@end

@implementation HWTouchIDTestVC

- (void)viewDidLoad {
    [super viewDidLoad];
    
    self.view.backgroundColor = [UIColor blackColor];
    
    //创建控件
    [self creatControl];
}

- (void)creatControl
{
    //测试按钮
    UIButton *btn = [[UIButton alloc] initWithFrame:CGRectMake(50, 200, 120, 50)];
    btn.backgroundColor = [UIColor orangeColor];
    [btn setTitle:@"测试按钮" forState:UIControlStateNormal];
    [btn addTarget:self action:@selector(btnOnClick) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:btn];
    
    //提示标签
    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(220, 200, 120, 50)];
    label.text = @"测试标签";
    label.textAlignment = NSTextAlignmentCenter;
    label.backgroundColor = [UIColor yellowColor];
    [self.view addSubview:label];
    self.label = label;
}

- (void)btnOnClick
{
    //初始化
    LAContext *context = [[LAContext alloc] init];
    NSError *error = nil;
    //显示的文字
    NSString *str = @"指纹验证";
    //判断是否能进行验证
    if ([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error]) {
        [context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:str reply:^(BOOL success, NSError * _Nullable error) {
            
            if (success) {
                NSLog(@"验证成功");
                dispatch_async(dispatch_get_main_queue(), ^{
                    self.label.text = @"验证成功";
                    self.label.backgroundColor = [UIColor greenColor];
                });
                
            }else {
                NSLog(@"验证失败,error:%@", error);
                dispatch_async(dispatch_get_main_queue(), ^{
                    self.label.text = @"验证失败";
                    self.label.backgroundColor = [UIColor redColor];
                });
            }
        }];
        
    }else {
        NSLog(@"无法验证指纹,error: %@", error);
        self.label.text = @"无法验证";
    }
}

@end
           

继续阅读