iOS之Touch ID的使用
来源:互联网 发布:点赞数据库设计 编辑:程序博客网 时间:2024/05/18 03:14
最近做了一个Touch ID的功能,添加到APP内,所以研究了一下,下面跟大家分享一下。
iOS系统的指纹识别功能最低支持的机型为iPhone 5s,最低支持系统为iOS 8,虽然安装iOS 7系统的5s机型可以使用系统提供的指纹解锁功能,但由于API并未开放,所以理论上第三方软件不可使用。
在开始前,我们首先要做一下,依赖库的添加,这里给大家介绍一种新的方式,比较方便,不用先添加,然后在引用头文件,直接这样就可以了:
@import LocalAuthentication; 这个就Touch ID的依赖库。接下来就是要实现下面两个方法:
//是否可以用 Touch ID - (BOOL)canEvaluatePolicy:(LAPolicy)policy error:(NSError * __autoreleasing *)error;//用Touch ID后,返回的结果,是否成功- (void)evaluatePolicy:(LAPolicy)policy localizedReason:(NSString *)localizedReason reply:(void(^)(BOOL success, NSError *error))reply;
因为在使用Touch ID前,我们必须使用canEvaluatePolicy
验证该机器是否支持,不然会直接崩溃的。然后我们 使用evaluatePolicy方法启动传说中的指纹验证。接下来先给大家贴个验证操作的返回code列表:
typedef NS_ENUM(NSInteger, LAError){ //授权失败 LAErrorAuthenticationFailed = kLAErrorAuthenticationFailed, //用户取消Touch ID授权 LAErrorUserCancel = kLAErrorUserCancel, //用户选择输入密码 LAErrorUserFallback = kLAErrorUserFallback, //系统取消授权(例如其他APP切入或者按home键时) LAErrorSystemCancel = kLAErrorSystemCancel, //系统未设置密码 LAErrorPasscodeNotSet = kLAErrorPasscodeNotSet, //设备Touch ID不可用,例如未打开 LAErrorTouchIDNotAvailable = kLAErrorTouchIDNotAvailable, //设备Touch ID不可用,用户未录入 LAErrorTouchIDNotEnrolled = kLAErrorTouchIDNotEnrolled,}
其他的就不多说了看代码:LAContext *context=[[LAContextalloc] init];
context.localizedFallbackTitle=@"";
NSError *err;
if([contextcanEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationerror:&err]){
NSLog(@"该设备支持Touch ID");
UIView *view=[[UIViewalloc] initWithFrame:CGRectMake(0,0, [UIScreenmainScreen].bounds.size.width, [UIScreenmainScreen].bounds.size.height)];
view.backgroundColor=[UIColorblackColor];
view.alpha=0.5;
[self.viewaddSubview:view];
[context isCredentialSet:LACredentialTypeApplicationPassword];
[context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationlocalizedReason:@"指纹验证"reply:^(BOOL success,NSError * _Nullable error) {
if(success)
{
NSLog(@"识别成功");
dispatch_async(dispatch_get_main_queue(), ^{
[view removeFromSuperview];
});
}
else
{
if(error.code==kLAErrorUserFallback)
{
NSLog(@"Fallback按钮被点击");
}
elseif (error.code==kLAErrorUserCancel)
{
NSLog(@"取消按钮被点击");
}
elseif (error.code==kLAErrorAppCancel)
{
NSLog(@"按home键推出");
}
else
{
NSLog(@"指纹识别失败%ld",error.code);
}
dispatch_async(dispatch_get_main_queue(), ^{
[view removeFromSuperview];
});
}
}];
}else{
NSLog(@"设备不支持Touch ID");
UIAlertController *alert = [UIAlertControlleralertControllerWithTitle:@"提示"message:@"设备不支持Touch ID"preferredStyle:UIAlertControllerStyleAlert];
[selfpresentViewController:alert animated:YEScompletion:nil];
UIAlertAction *action = [UIAlertActionactionWithTitle:@"确定"style:UIAlertActionStyleCancelhandler:^(UIAlertAction *_Nonnull action) {
isLock=NO;
}];
[alert addAction:action];
}
Demo地址就附在这里了:https://github.com/j521887/TouchID_OC- iOS之Touch ID的使用
- IOS 之Touch ID
- iOS开发中Touch ID的使用
- IOS-Touch ID的简单使用
- iOS开发Touch ID的简单使用
- iOS开发中 Touch ID的使用
- Touch ID 的使用
- iOS Touch ID 使用详情
- iOS SDK详解之App使用Touch ID认证
- iOS 中Touch ID(指纹识别技术) 的使用
- Touch ID 的简单使用
- iOS开发之Touch ID指纹验证
- ios的touch ID 验证开发
- iOS Touch ID
- iOS - Touch ID
- swift Touch ID 的简单使用 指纹识别
- Touch ID简单使用
- Touch ID使用
- Android中视频处理
- 【REACT NATIVE 系列教程之四】刷新组件RENDER(重新渲染)的三种方式详解
- grub2与grub区别
- 算法16 之堆排序
- 轻量级Java EE企业应用实战 学习笔记(二)第二章
- iOS之Touch ID的使用
- 机器学习算法解析—逻辑回归分类
- xml中空格换行缩进
- POJ 1442 Black Box(treap树)
- 最全面的Android Studio使用教程
- HDU--2036改革春风吹满地
- Qt: 渐变填充
- Evaluation of Deep Learning Toolkits
- mysql 注释符号