美文网首页
五分钟上手 Touch ID

五分钟上手 Touch ID

作者: 送我迷迭香 | 来源:发表于2019-03-22 12:02 被阅读0次

Touch ID

Touch ID是苹果公司的一种指纹识别技术。它作为iPhone 5s上的“杀手级”功能,早已为人们所熟知。 iPhone SE、iPhone 6、iPhone 6 Plus、iPhone 6s、iPhone 6s Plus、iPhone 7、iPhone 7 Plus,iPad ProiPad mini 4iPad mini 3iPad Air 2也使用了Touch ID。苹果把用户的指纹数据存放在处理器的安全区域(Secure Enclave)中,充分保护用户的数据安全。除此之外,苹果还有另外一道指纹数据安全防线,以一种前所未有的硬件技术实现了对用户数据的保护。

下面简单学习下怎么在iOS项目上使用 Touch ID 

使用

Touch ID的API非常的简单也好理解,在使用前我们需要导入LocalAuthentication这个库。

1

首先来看下头文件的定义:

#import  《LocalAuthentication/LocalAuthentication.h》

//验证设备是否支持Touch ID

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

//进行验证的回调

- (void)evaluatePolicy:(LAPolicy)policy

localizedReason:(NSString*)localizedReason

reply:(void(^)(BOOLsuccess,NSError*__nullableerror))reply;

//取消Touch Id验证的按钮的标题,默认标题是输入密码@property(nonatomic,copy)NSString*localizedFallbackTitle;

代码使用示例

- (void)viewDidLoad {

[superviewDidLoad];

self.title=@"Just For Test";

UIButton*btn = [UIButtonbuttonWithType:UIButtonTypeCustom];

btn.frame=CGRectMake(138,200,100,100);

btn.backgroundColor= [UIColorredColor];

[btnsetTitle:@"点我哟"forState:UIControlStateNormal];

[btnaddTarget:selfaction:@selector(startTouchId)forControlEvents:UIControlEventTouchUpInside];

[self.viewaddSubview:btn];

}

- (void)startTouchId{

LAContext*context = [LAContextnew];

NSError*error;

context.localizedFallbackTitle=@"啦啦啦失败了吧";

context.localizedCancelTitle=@"取消点我";

//用来判断设备是否支持Touch ID

if([contextcanEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometricserror:&error]) {

// dispatch_after(dispatch_time(DISPATCH_TIME_NOW, .5f * NSEC_PER_SEC), dispatch_get_main_queue(), ^{

//验证身份

[contextevaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometricslocalizedReason:NSLocalizedString(@"Use Touch ID to Change Color.",nil)reply:^(BOOLsuccess,NSError*error) {

if(success) {

dispatch_async(dispatch_get_main_queue(), ^{

self.view.backgroundColor= [UIColorcolorWithRed:arc4random()%255/255.0green:arc4random()%255/255.0blue:arc4random()%255/255.0alpha:1];

});

}else{

NSLog(@"%@",error.localizedDescription);

switch(error.code) {

caseLAErrorSystemCancel:

{

NSLog(@"Authentication was cancelled by the system");

//切换到其他APP,系统取消验证Touch ID

break;

}

caseLAErrorUserCancel:

{

NSLog(@"Authentication was cancelled by the user");

//用户取消验证Touch ID

break;

}

caseLAErrorUserFallback:

{

NSLog(@"User selected to enter custom password");

[[NSOperationQueuemainQueue]addOperationWithBlock:^{

//用户选择输入密码,切换主线程处理

}];

break;

}

caseLAErrorAuthenticationFailed:

{

NSLog(@"Authentication Failed");

break;

}

caseLAErrorTouchIDLockout:

{

NSLog(@"TOUCH ID is locked out");

break;

}

caseLAErrorAppCancel:

{

NSLog(@"app cancle the authentication");

break;

}

caseLAErrorInvalidContext:

{

NSLog(@"context is invalidated");

break;

}

default:

{

[[NSOperationQueuemainQueue]addOperationWithBlock:^{

//其他情况,切换主线程处理

}];

break;

}

}

}

}];

//});

}else{

/**

LAErrorTouchIDNotAvailable设备本身并不具备指纹传感装置。

*/

NSLog(@"%@",error.localizedDescription);

//不支持指纹识别,LOG出错误详情

switch(error.code) {

caseLAErrorTouchIDNotEnrolled:

{

//已经设定有密码机制,但设备配置当中还没有保存过任何指纹内容。

NSLog(@"TouchID is not enrolled");

break;

}

caseLAErrorPasscodeNotSet:

{

//设备上并不具备密码设置信息,也就是说Touch ID功能处于被禁用状态。

NSLog(@"A passcode has not been set");

break;

}

caseLAErrorTouchIDNotAvailable:{

NSLog(@"no TouchID");

break;

}

default:

{

NSLog(@"TouchID not available");

break;

}

}

}

}

这样我们就完成了一个Touch ID的验证功能。当我们点击按钮进行调用的时候,就会弹出验证的对话框:

2

弹窗目前还不能自定义,都是统一的,第一行是app的名字+Touch ID, 第二行是需要用Touch ID的理由。在用户进行操作后,我们可以在回调的block那边处理自己的业务逻辑。

总结

从上面的代码中我们也可以看到,Touch ID验证中我们并不能拿到标识,只有一个YES or NO的结果,只能用来表明当前用户有权限使用这设备。正常情况下,我们的手机里面的账号信息都是自己的,所以在一定方面的确有加固安全,验证和方便的功能。

简介:Touch ID_百度百科

相关文章

  • 五分钟上手 Touch ID

    Touch ID Touch ID是苹果公司的一种指纹识别技术。它作为iPhone 5s上的“杀手级”功能,早已为...

  • Touch ID

    1.引入LocalAuthentication.framework库,并导入头文件 2.判断设备是否支持Touch...

  • Touch ID

    } (void)authentication{LAContext * zrContext = [[LAContex...

  • Touch ID

    使用iOS 8 SDK添加Touch ID指纹识别功能 - Puzhi的专栏 - 博客频道 - CS...

  • Touch ID

    Touch ID简单介绍 iOS系统的指纹识别功能最低支持的机型为iPhone 5s,最低支持系统为 ...

  • Touch ID

    这是在IOS上验证用户身份的操作,使用Local Authentication框架,在这个框架里每种验证用户身份的...

  • Touch ID

    借鉴了Touch ID - 简书 touch id 即指纹解锁,最低支持机型iPhone5s,系统版本8.0以上....

  • 【iOS】Touch ID 和Face ID

    Touch ID 和Face ID识别

  • 2016笔记——Touch ID

    这篇的Touch ID技术与之前的3D Touch感觉有点差不多,但是实际上相差甚远。 Touch ID也就是指纹...

  • iOS Touch ID

    附:我的博客地址

网友评论

      本文标题:五分钟上手 Touch ID

      本文链接:https://www.haomeiwen.com/subject/opevmqtx.html