IOS FaceID & TouchID识别
需要最低系统支持8.0以上,如果是FaceID至少IOS11以上.导入头文件#import <LocalAuthentication/LocalAuthentication.h>逻辑部分处理如下:- (void)fingerVerification{if ([UIDevice currentDevice].systemVersion.floatValue<8.0) {NSLog(@"ios8.0以后才支持指纹识别");return;}//IOS11之后如果支持faceId也是走同样的逻辑,faceId和TouchId只能选一个LAContext *context = [[LAContext alloc] init];NSError *error = nil;if ([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error]) {//支持 localizedReason为alert弹框的message内容[context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:@"请验证已有指纹" reply:^(BOOL success, NSError * _Nullable error) {if (success) {NSLog(@"验证通过");} else {NSLog(@"验证失败:%@",error.description);switch (error.code) {case LAErrorSystemCancel:{NSLog(@"系统取消授权,如其他APP切入");//系统取消授权,如其他APP切入break;}case LAErrorUserCancel:{//用户取消验证Touch IDNSLog(@"用户取消验证Touch ID");break;}case LAErrorAuthenticationFailed:{//授权失败NSLog(@"授权失败");break;}case LAErrorPasscodeNotSet:{//系统未设置密码NSLog(@"系统未设置密码");break;}case LAErrorBiometryNotAvailable:{//设备Touch ID不可用,例如未打开NSLog(@"设备Touch ID不可用,例如未打开");break;}case LAErrorBiometryNotEnrolled:{//设备Touch ID不可用,用户未录入NSLog(@"设备Touch ID不可用,用户未录入");break;}case LAErrorUserFallback:{[[NSOperationQueue mainQueue] addOperationWithBlock:^{//用户选择输入密码,切换主线程处理NSLog(@"用户选择输入密码,切换主线程处理");}];break;}default:{[[NSOperationQueue mainQueue] addOperationWithBlock:^{//其他情况,切换主线程处理NSLog(@"其他情况,切换主线程处理");}];break;}}}}];} else {NSLog(@"不支持指纹识别");NSLog(@"error : %@",error.localizedDescription);}}iPhoneX的faceID到底是一种怎样风骚的操作?
遥同学 2017-09-15 11:07:03
26737
收藏 4分类专栏: Android开发工程师成长之路版权2017年9月13日,苹果召开发布会,发布的iPhone X支持Face ID登录解锁功能。什么是face ID?对,就是这个
一道光打在你半夜两点都不睡的修仙脸上的这个玩意儿。当然,这只是让你明白face ID是怎么工作的,事实上并不会有这一道光,准确地说,是不会有这样一道可见光,而是红外光,下面会讲到全面屏幕上方那一条黑带里到底装了哪些模块。faceID有什么用?苹果会将这一功能用于解锁及支付确认。3D摄像还可以用来玩 Animoji,就是动画表情跟着人脸变的那个,3D摄像技术是这个功能的技术支撑。为什么要用faceID ?因为手机全面屏是趋势(为什么是趋势?我也不知道,反正大家都这么说),小米 MIX2 就在发布会前两天发布,直接截胡iPhoneX(不过后来雷军后来解释说是自己先定的发布时间,苹果是后面改的时间)。要全面屏就要取消home键,没有了home键就不能指纹识别了吗?当然不是,其实现在各大厂商都在研究屏下指纹识别,只不过都还没达到量产的级别。有几个朋友在汇顶的,据说现在每天都拼了老命在加班,就是为了抢屏下指纹第一枪。苹果好像并不喜欢背部指纹识别的方案,不知道是觉得丑还是不符合操作习惯,或者是怕增加厚度,所以在屏下指纹识别成熟之前,在iPhoneX上先上了faceID,叫不叫座暂且不说,至少这热度是起来了。指纹识别会被弃用吗?个人感觉不会,指纹识别的体验好于faceID(大家幻想一下各种场景,而且faceID的组件在屏幕上占的位置理论上是要更多的),但是现在屏下指纹识别方案未成熟,只能用faceID暂代,这个问题的答案,还是交给时间吧,我感觉在一段时间内这两种技术会并存。几年前三星还在S4时代的时候不久已经有人脸识别了吗,faceID有什么不一样?几年前的人脸识别绝大多数是2D平面识别,现在是3D立体识别,简单的说就是,那时候的人脸识别,你捡到idol的手机,你用idol的海报就能解锁,但是现在的话,你至少要用石膏做个idol的脸模才能解锁。当然,这么说至少告诉你二者的区别,实际的话还是得真人才能解锁的,苹果就请了好莱坞最好的特效师做了人脸模具,发现并不能解锁手机。 而且在苹果还特地强调了眼球识别的部分,在闭着眼睛的情况下是不能解锁的。那么,这种3D的人脸识别是怎么实现的呢?3D脸部识别的实现方法有3种:结构光,TOF,双目。结构光,Structured Light,结构光投射特定的光信息到物体表面后,由摄像头采集。根据物体造成的光信号的变化来计算物体的位置和深度等信息,进而复原整个三维空间。TOF,Time Of Flight,飞行时间,通过专有传感器,捕捉近红外光从发射到接收的飞行时间,判断物体距离。双目测距,Stereo System,利用双摄像头拍摄物体,再通过三角形原理计算物体距离。苹果用的是结构光。原理上有点像蝙蝠发送超声波识别识别物体的原理,就是要先发送波,根据反射判断物体的形状,只不过蝙蝠发的是超声波,结构光发的是光。iPhoneX上的8个组建分别是干嘛用的?
Infrared camera:红外摄像头Flood illuminator:泛光灯Proximity sensor:距离传感器Ambient light sensor:光度感应器Speaker:扬声器Microphone:麦克风Front camera:前置摄像头Dot projector:点状投射器其中,3D摄像要用到的是 红外摄像机、泛光灯和点状投射1器这三个。点状投射器用于往连上发射3W个带编码的光点,红外摄像头用于把脸上反射的光捕捉起来,绘制脸部的3D图像,泛光灯用于补光。结构光是什么玩意儿?已知空间方向的投影光线的集合称为结构光。结构光三维视觉是基于光学三角法测量原理,光学投射器将一定模式的结构光投射于物体表面,在表面形成由被测物体所调制光条三维图像。该三维图像由处于另一位置的摄像机探测,从而获得光条二维畸变图像。光条的畸变程度取决于光学投射器与摄像机之间的现对位置和物体表面轮廓。直观上,沿光条显示出的偏移与物体表面高度成正比,扭结表示了平面的变化,不连续显示了表面的物理间隙。当光学投射器与摄像机之间的相对位置一定时,由畸变的二维光条图像坐标便可重现物体表面三维轮廓。
具体的原理、公式我就不卖弄了,留给专业人士来解释吧。