美文网首页
iOS Touch ID <指纹识别>

iOS Touch ID <指纹识别>

作者: cym_bj | 来源:发表于2016-02-15 16:28 被阅读249次

Touch ID

Touch

ID是iPhone5S后加入的一项新的功能,也就是大家熟知的指纹识别技术。大家用得最多的可能是手机的解屏操作,不用在和以前一样输入手机的四位数密

码进行验证。一方面不用担心密码被别人看到,另一方面也方便了自己的操作。iOS8后苹果开放了Touch

ID的API给开发者,这也给我们的app带来了新的体验。

使用

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

1.png

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

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

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

//进行验证的回调

- (void)evaluatePolicy:(LAPolicy)policy      localizedReason:(NSString*)localizedReason                reply:(void(^)(BOOLsuccess,NSError*error))reply;

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

代码使用示例

LAContext *laContext = [[LAContext alloc] init];

NSError*error;

if([laContext canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error])

{      

[laContext evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics                      localizedReason:@"Touch Id Test"reply:^(BOOLsuccess,NSError*error) {

if(success)

{NSLog(@"success to evaluate");//do your work}

if(error)

{NSLog(@"---failed to evaluate---error: %@---", error.description);//do your error handle}                                }];    }

else{NSLog(@"==========Not support :%@", error.description);//do your error handle}

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

2.png

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

错误处理

typedefNS_ENUM(NSInteger, LAError){//用户验证没有通过,比如提供了错误的手指的指纹LAErrorAuthenticationFailed = kLAErrorAuthenticationFailed,// 用户取消了Touch ID验证LAErrorUserCancel          = kLAErrorUserCancel,//用户不想进行Touch ID验证,想进行输入密码操作

LAErrorUserFallback        = kLAErrorUserFallback,// 系统终止了验证

LAErrorSystemCancel        = kLAErrorSystemCancel,// 用户没有在设备Settings中设定密码LAErrorPasscodeNotSet      = kLAErrorPasscodeNotSet,// 设备不支持Touch IDLAErrorTouchIDNotAvailable  = kLAErrorTouchIDNotAvailable,// 设备没有进行Touch ID 指纹注册

LAErrorTouchIDNotEnrolled  = kLAErrorTouchIDNotEnrolled,}NS_ENUM_AVAILABLE(10_10,8_0);

在block回调那边,我们需要对每种错误进行处理,以便得到更好的用户体验。

#import "ViewController.h"#import@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {

[super viewDidLoad];

UIButton *btn=[UIButton buttonWithType:UIButtonTypeCustom];

btn.center=self.view.center;

btn.bounds=CGRectMake(0, 0, 100, 40);

[btn setTitle:@"指纹识别" forState:UIControlStateNormal];

[btn setTitleColor:[UIColor orangeColor] forState:UIControlStateNormal];

[self.view addSubview:btn];

[btn addTarget:self action:@selector(clickTouchId) forControlEvents:UIControlEventTouchUpInside];

}

-(void)clickTouchId

{

CGFloat systemVersion=[UIDevice currentDevice].systemVersion.doubleValue;

if (systemVersion>=8.0)

{

LAContext *context=[[LAContext alloc]init];

NSError *error=nil;

if ([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error]) {

[context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:@"XX请求验证" reply:^(BOOL success, NSError * _Nullable error) {

if (success)

{

NSLog(@"验证成功");

}

switch (error.code)

{

case LAErrorSystemCancel:

NSLog(@"切换到其它app,系统取消验证");

break;

case LAErrorUserCancel:

NSLog(@"用户取消验证");

break;

case LAErrorUserFallback:

NSLog(@"用户选择输入密码,切换主线程处理");

break;

}

}];

}

if (error)

{

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

}

}

}

相关文章

  • iOS Touch ID <指纹识别>

    Touch ID Touch ID是iPhone5S后加入的一项新的功能,也就是大家熟知的指纹识别技术。大家用得最...

  • Touch ID

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

  • iOS 指纹识别

    指纹识别: iPhone5S开始,推出指纹识别 iOS8.0之后苹果允许第三方 App 使用 Touch ID进行...

  • php 同字段的or连贯查询

    实例:$map['id']=array(array('gt',3),array('lt',10),'or');

  • iOS Touch ID

    iOS 8 SDK向开发者公开了Touch ID指纹识别功能,允许App对用户身份进行本地验证。使用Touch I...

  • app高大上的指纹识别登陆

    iOS 8 SDK向开发者公开了Touch ID指纹识别功能,允许App对用户身份进行本地验证。使用Touch I...

  • iOS生物识别验证(Touch ID、Face ID)

    简介 iOS生物识别验证包括Touch ID和Face ID。苹果从iPhone5S开始,具有指纹识别技术,从iO...

  • iOS指纹识别 - 生物识别

    简介 iPhone 5s 开始支持。 iOS 8.0 开放了Touch ID 的接口。 代码准备 指纹识别 头文件...

  • iOS 指纹验证(Touch ID)

    iOS 指纹验证(Touch ID) iOS的指纹识别是一个非常简单的api系统已经封好了,直接调起就行,非常简单...

  • iOS Touch ID 开发教程

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

网友评论

      本文标题:iOS Touch ID <指纹识别>

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