iOS TouchID指纹验证

Touch ID不存储用户的任何指纹图像,只保存代表指纹的数字字符。iPhone 5s的A7处理器采用了新的高级安全架构,其中有一块名为Secure Enclave的区域用以专门保护密码和指纹数据。只有Secure Enclave可以访问指纹数据,而且它还把这些数据同处理器和系统隔开,因而这些永远不会被存储在苹果的服务器上,也不会被同步到iCloud或其他地方。除了Touch ID之外,它们不会被匹配到其他指纹库中。

作为程序员, 我们大可不必关心上述的硬件原理, 苹果工程师们已经为我们封装号了API, 我们只需要调用就是了.

其实TouchID指纹验证只涉及到了下面两个方法:

1: 检测硬件是否支持, TouchID你都没有, 你还指纹验证, 验证个毛线呀~

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

2: 持续地进行"扫描"指纹, 直到成功, 或者三次失败而进行下一次扫描, 成功或失败, 都在这个方法的Block中进行处理: 

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

其中localizedReason是在系统弹框中的提示语:


这两个方法都在LocalAuthentication.h中定义的, 所以需要在你得App中添加指纹验证的时候, 必须要导入下面的头文件:

#import <LocalAuthentication/LocalAuthentication.h>

下面给个简单的验证栗子, 只是对验证结果的简单打印显示, 未作任何业务逻辑处理:

    // 初始化上下文
    LAContext *context = [[LAContext alloc] init];
    NSError *error = nil;
    // 认证出错时, 在系统弹框中的提示语
    NSString *str = @"请继续扫描你得指纹";
    // 检测设备是否有TouchID
    if ([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error]) { // 设备有TouchID
        // 认证成功或失败之前, 会持续进行认证操作
        [context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:str reply:^(BOOL success, NSError *error) {
            if (success) { // TouchID存在, 并认证成功
                NSLog(@"认证成功");
                if (!success) {
                    NSLog(@"%@", error);
                }
            } else { // TouchID存在, 但认证失败
                NSLog(@"认证失败");
                if (!success) {
                    NSLog(@"%@", error);
                }
            }
        }];
    } else { // 设备没有TouchID
        NSLog(@"发生了一个错误");
        if (error) {
            NSLog(@"%@", error);
        }
    }

源码下载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值