iOS开发之指纹解锁
2016-07-27 00:00
204 查看
#import <LocalAuthentication/LocalAuthentication.h> 指纹验证的实现 - (void)authenticateUser { //初始化上下文对象 LAContext* context = [[LAContext alloc] init]; //错误对象 NSError* error = nil; NSString* result = @"Authentication is needed to access your notes."; //首先使用canEvaluatePolicy 判断设备支持状态 if ([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error]) { //支持指纹验证 [context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:result reply:^(BOOL success, NSError *error) { if (success) { //验证成功,主线程处理UI } else { NSLog(@"%@",error.localizedDescription); switch (error.code) { case LAErrorSystemCancel: { NSLog(@"Authentication was cancelled by the system"); //切换到其他APP,系统取消验证Touch ID break; } case LAErrorUserCancel: { NSLog(@"Authentication was cancelled by the user"); //用户取消验证Touch ID break; } case LAErrorUserFallback: { NSLog(@"User selected to enter custom password"); [[NSOperationQueue mainQueue] addOperationWithBlock:^{ //用户选择其他验证方式,切换主线程处理 }]; break; } default: { [[NSOperationQueue mainQueue] addOperationWithBlock:^{ //其他情况,切换主线程处理 }]; break; } } } }]; } else { //不支持指纹识别,LOG出错误详情 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); [self showPasswordAlert]; } } 对几种情况的说明 typedef NS_ENUM(NSInteger, LAError) { //授权失败 LAErrorAuthenticationFailed = kLAErrorAuthenticationFailed, //用户取消Touch ID授权 LAErrorUserCancel = kLAErrorUserCancel, //用户选择输入密码 LAErrorUserFallback = kLAErrorUserFallback, //系统取消授权(例如其他APP切入) LAErrorSystemCancel = kLAErrorSystemCancel, //系统未设置密码 LAErrorPasscodeNotSet = kLAErrorPasscodeNotSet, //设备Touch ID不可用,例如未打开 LAErrorTouchIDNotAvailable = kLAErrorTouchIDNotAvailable, //设备Touch ID不可用,用户未录入 LAErrorTouchIDNotEnrolled = kLAErrorTouchIDNotEnrolled, } NS_ENUM_AVAILABLE(10_10, 8_0);
相关文章推荐
- iOS社交分享(自带分享)
- iOS日常开发常用组件
- lae界面开发工具入门之介绍十二--<iOS系统如何编译打包?>
- CAGradientLayer - 渐变颜色(iOS)
- ios知识整理 (未完成)
- iOS 金融数字计算
- iOS 屏幕比例缩放 ScaleLayout
- iOS开发 -文件下载(下载功能的封装)
- iOS-应用生命周期
- iOS二维码扫描/识别
- ios开发之级联菜单(两个tableView实现)
- iOS与HTML5交互方法总结(转)
- IOS 如何删除文件夹下所有的SVN文件
- iOS 一些struct类型的NSLog输出格式-b
- iOS Xcode制作模板类-b
- 监听iOS检测屏幕旋转状态,不需开启屏幕旋转-b
- MJExtension 之模型建立后没有效果
- 7.26 iOS 基础(加法计算器布局)
- iOS TableView填坑之一 Cell显示不完整
- ios开发零散知识点总结