IOS-Touch ID的简单使用
2016-03-07 15:17
686 查看
其实很简单,用于身份认证的所有的接口都在LocalAuthentication framework中, 该framework实际上只有三个头文件:
LAContext.h
LAError.h
LAPublicDefines.h
而实际用到的函数也只有两个:
上述两个函数都是LAContext的member function.目前LAPolicy只有一个值: LAPolicyDeviceOwnerAuthenticationWithBiometrics.
如果canEvaluatePolicy返回YES,表示设备支持指纹识别,那么便可以调用evaluatePolicy:函数进行指纹识别了.调用evaluatePolicy函数后会弹出一个alert,如下图:
该alert可定制的只有两处:
1.”To access your photos”提示文字是由localizedReason参数指定的,用来向用户说明使用Touch ID的目的.
2.”Enter Password”可由LAContext的localizedFallbackTitle属性设置(LAContext目前只有这一个属性),如果不设置的话,默认是”Enter Password”.值得注意的是,如果该属性设置为@“”(空字符串),该按钮会被隐藏,Evernote应该就是这么做的.
其他的免谈,当然更别提获取用户的指纹数据了.
理论上三种情况下会退出验证(alert会被dismiss,reply回调会被调用):
1.用户指纹通过验证
2.用户点击”Enter Password”按钮
3.用户点击”Cancel”按钮
还有一种情况:用户输入了错误的指纹.这种情况下,该alert不会被dismiss,其标题会由”Touch ID”改为”Try Again”,有弹簧状的动画效果过渡.好了,代码如下(不要忘了引入头文件 <LocalAuthentication/LocalAuthentication.h>):
LAContext.h
LAError.h
LAPublicDefines.h
而实际用到的函数也只有两个:
// 用来判断设备是否支持Touch ID - (BOOL)canEvaluatePolicy:(LAPolicy)policy error:(NSError * __autoreleasing *)error __attribute__((swift_error(none))); // 真正验证身份的函数 - (void)evaluatePolicy:(LAPolicy)policy localizedReason:(NSString *)localizedReason reply:(void(^)(BOOL success, NSError * __nullable error))reply;
上述两个函数都是LAContext的member function.目前LAPolicy只有一个值: LAPolicyDeviceOwnerAuthenticationWithBiometrics.
如果canEvaluatePolicy返回YES,表示设备支持指纹识别,那么便可以调用evaluatePolicy:函数进行指纹识别了.调用evaluatePolicy函数后会弹出一个alert,如下图:
该alert可定制的只有两处:
1.”To access your photos”提示文字是由localizedReason参数指定的,用来向用户说明使用Touch ID的目的.
2.”Enter Password”可由LAContext的localizedFallbackTitle属性设置(LAContext目前只有这一个属性),如果不设置的话,默认是”Enter Password”.值得注意的是,如果该属性设置为@“”(空字符串),该按钮会被隐藏,Evernote应该就是这么做的.
其他的免谈,当然更别提获取用户的指纹数据了.
理论上三种情况下会退出验证(alert会被dismiss,reply回调会被调用):
1.用户指纹通过验证
2.用户点击”Enter Password”按钮
3.用户点击”Cancel”按钮
还有一种情况:用户输入了错误的指纹.这种情况下,该alert不会被dismiss,其标题会由”Touch ID”改为”Try Again”,有弹簧状的动画效果过渡.好了,代码如下(不要忘了引入头文件 <LocalAuthentication/LocalAuthentication.h>):
- (IBAction)useTouchIdButtonClick:(id)sender { LAContext *context = [LAContext new]; NSError *error; context.localizedFallbackTitle = @"Enter Password"; if ([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthentication error:&error]) { NSLog(@"Touch ID is available."); [context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:@"Use Touch ID to login in." reply:^(BOOL success, NSError * _Nullable error) { if (success) { NSLog(@"authenticated using Touch ID."); }else{ if (error.code == kLAErrorUserFallback) { NSLog(@"User tapped Enter Password."); }else if (error.code == kLAErrorUserCancel){ dispatch_async(dispatch_get_main_queue(), ^{ UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"" message:@"User tapped Enter Password." delegate:nil cancelButtonTitle:nil otherButtonTitles:@"Ok", nil]; [alert show]; }); NSLog(@"User tapped Cancel."); }else{ NSLog(@"Authenticated failed."); } } }]; }else{ NSLog(@"Touch ID is not available:%@",error); } }效果图如下:
相关文章推荐
- iOS CAShaperLayer 层详解
- iOS 有关推送实现过程
- ios 的 字段、方法、属性的访问权限控制
- iOS将GIF转变为图片
- iOS获取字符串高度
- iOS 设备定位功能可用的判断
- IOS 获取设备机型 系统版本 应用版本
- iOS pod install update 慢!!!
- IOS的变量修饰词@public 、@protected、@package、@private,简称 4P
- IOS学习 scrollView的基本属性
- iOS7 tableview separatorInset cell分割线左对齐
- 【Xamarin挖墙脚系列:IOS-关于手机支持的屏幕方向】
- 【Xamarin挖墙脚系列:Xamarin.IOS机制原理剖析】
- iOS开发有关Core Animation的介绍
- iOS-触摸事件
- iOS多线程
- 【Xamarin挖墙脚系列:Xamarin.IOS的程序的结构】
- IOS中对Url进行编码和解码
- 【Xamarin 挖墙脚系列:IOS 开发界面的3种方式】
- ios googlemaps 开发 设置地图可见所有大头针