iOS开发 实现指纹识别及验证
2017-04-20 20:17
603 查看
最近在写一个demo,打算实现指纹验证以及人脸识别(手势解锁网上demo很多所以不打算集成,很抱歉并没有嘲讽大神们的技术结晶的意思,只是解锁方式择其二就行了),本篇只是记录一下初次学习指纹识别的过程以及心得。
苹果公司推出的指纹识别,提供的只有验证是否支持指纹以及指纹是否正确的功能,开发者并不能透过home键或者苹果提供的sdk获取到用户的指纹信息,包括支付宝的指纹支付也只是简单的验证touchID而已并,接下来开始使用。。。。
首先,导入头文件(l里边提供的属性和方法不是很多)
#import <LocalAuthentication/LocalAuthentication.h>
接下来就是使用方法,创建对象,设置属性,调用苹果提供的方法,流程如下
//初始化上下文对象
LAContext* context = [[LAContext
alloc] init];
//这个设置的使用密码的字体,当text=@""时,按钮将被隐藏
context.localizedFallbackTitle=@"";
//这个设置的取消按钮的字体
context.localizedCancelTitle=@"取消";
//错误对象
NSError* error =
nil;
NSString* result =
@"需要验证您的touch ID";
//首先使用canEvaluatePolicy
判断设备支持状态
if ([context
canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics
error:&error]) {
//支持指纹验证
[context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics
localizedReason:result
reply:^(BOOL success,
NSError *error) {
if (success) {
//验证成功,主线程处理UI
//NSLog(@"验证成功");
}
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);
}
如上面代码,对象提供的属性只有几个,两个按钮的字体,好像还有一个最大错误次数,还有一个只读的状态属性,这里都没有用到
提供的方法只有两个,一个是验证touch ID 是否可以使用,另一个是使用touch ID进行验证,方法给有回调block,里边的error都有错误参数,这里不做详述
touch ID 在验证连续错误三次的时候,会停止touch ID的使用,需要输入手机的密码以解锁。
在使用的过程中,笔者在block回调中使用了LCProgressHUD,但是界面出现了卡死的现象,通过视图层级下,发现是由于LCProgressHUD的界面没有清除,导致整个界面被它覆盖,形成卡死假象。
整个使用过程就酱紫,以后还需要多花时间研究。
苹果公司推出的指纹识别,提供的只有验证是否支持指纹以及指纹是否正确的功能,开发者并不能透过home键或者苹果提供的sdk获取到用户的指纹信息,包括支付宝的指纹支付也只是简单的验证touchID而已并,接下来开始使用。。。。
首先,导入头文件(l里边提供的属性和方法不是很多)
#import <LocalAuthentication/LocalAuthentication.h>
接下来就是使用方法,创建对象,设置属性,调用苹果提供的方法,流程如下
//初始化上下文对象
LAContext* context = [[LAContext
alloc] init];
//这个设置的使用密码的字体,当text=@""时,按钮将被隐藏
context.localizedFallbackTitle=@"";
//这个设置的取消按钮的字体
context.localizedCancelTitle=@"取消";
//错误对象
NSError* error =
nil;
NSString* result =
@"需要验证您的touch ID";
//首先使用canEvaluatePolicy
判断设备支持状态
if ([context
canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics
error:&error]) {
//支持指纹验证
[context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics
localizedReason:result
reply:^(BOOL success,
NSError *error) {
if (success) {
//验证成功,主线程处理UI
//NSLog(@"验证成功");
}
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);
}
如上面代码,对象提供的属性只有几个,两个按钮的字体,好像还有一个最大错误次数,还有一个只读的状态属性,这里都没有用到
提供的方法只有两个,一个是验证touch ID 是否可以使用,另一个是使用touch ID进行验证,方法给有回调block,里边的error都有错误参数,这里不做详述
touch ID 在验证连续错误三次的时候,会停止touch ID的使用,需要输入手机的密码以解锁。
在使用的过程中,笔者在block回调中使用了LCProgressHUD,但是界面出现了卡死的现象,通过视图层级下,发现是由于LCProgressHUD的界面没有清除,导致整个界面被它覆盖,形成卡死假象。
整个使用过程就酱紫,以后还需要多花时间研究。
相关文章推荐
- ios开发-指纹识别
- iOS 8开发:用Swift实现Touch ID验证
- iOS开发之指纹识别
- iOS开发实现TouchID指纹解锁
- iOS开发实现TouchID指纹解锁
- iOS指纹识别登录流程及实现
- iOS_使用LAContext实现TouchID(指纹识别)的使用
- iOS开发 - 用AFNetworking实现https单向验证,双向验证
- iOS传感器开发——为APP添加手机密码、指纹进行安全验证
- iOS开发 - 用AFNetworking实现https单向验证,双向验证
- iOS开发之指纹识别
- iOS开发实现随机图片验证码封装
- iOS 8开发:用Swift实现Touch ID验证
- iOS开发之Touch ID指纹验证
- iOS开发实现TouchID指纹解锁
- iOS实现指纹识别
- IOS开发-指纹识别
- iOS指纹识别登录流程及实现
- iOS开发 指纹识别
- iOS开发——Touch ID 指纹识别