iOS TouchID指纹验证
2015-11-05 22:38
666 查看
Touch ID不存储用户的任何指纹图像,只保存代表指纹的数字字符。iPhone 5s的A7处理器采用了新的高级安全架构,其中有一块名为Secure Enclave的区域用以专门保护密码和指纹数据。只有Secure
Enclave可以访问指纹数据,而且它还把这些数据同处理器和系统隔开,因而这些永远不会被存储在苹果的服务器上,也不会被同步到iCloud或其他地方。除了Touch ID之外,它们不会被匹配到其他指纹库中。
作为程序员, 我们大可不必关心上述的硬件原理, 苹果工程师们已经为我们封装号了API, 我们只需要调用就是了.
其实TouchID指纹验证只涉及到了下面两个方法:
1: 检测硬件是否支持, TouchID你都没有, 你还指纹验证, 验证个毛线呀~
2: 持续地进行"扫描"指纹, 直到成功, 或者三次失败而进行下一次扫描, 成功或失败, 都在这个方法的Block中进行处理:
其中localizedReason是在系统弹框中的提示语:
这两个方法都在LocalAuthentication.h中定义的,
所以需要在你得App中添加指纹验证的时候, 必须要导入下面的头文件:
下面给个简单的验证栗子, 只是对验证结果的简单打印显示, 未作任何业务逻辑处理:
源码下载
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); } }
源码下载
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- 讲解iOS开发中基本的定位功能实现
- js判断客户端是iOS还是Android等移动终端的方法
- IOS开发环境windows化攻略
- 检测iOS设备是否越狱的方法
- .net平台推送ios消息的实现方法
- 探讨Android与iOS,我们将何去何从?
- Android、iOS和Windows Phone中的推送技术详解
- IOS 改变键盘颜色代码
- 举例详解iOS开发过程中的沙盒机制与文件
- Android和IOS的浏览器中检测是否安装某个客户端的方法
- 分享一个iOS下实现基本绘画板功能的简单方法
- javascript实现阻止iOS APP中的链接打开Safari浏览器
- IOS开发第三方语音-微信语音