OC学习55:FaceID & TouchID & Guesture
前言
随着 iPhone 系统的升级,iOS 的登录方式也随之增多,其中指纹、脸部、手势登录,越来越常见,下面为大家介绍其登录的方式
FaceID
iPhoneX
以及上机型,人脸解锁
俗称 FaceID
,并且需要 iOS 11.0及以上
,因此需要满足两个条件才能调用系统的 FaceID
:
- iPhoneX及以上机型
- iOS 11.0 及以上系统
faceID
和其他的面部识别,虹膜识别不同,解锁用的是 红外线投影
,然后 另一个红外线接收器捕捉信号
,黑暗中也能解锁。
TouchID
iPhone 5s
到 iPhone 8
系列,支持 指纹识别
即 TouchID
,不支持人脸识别,同样的需要满足两个条件才能使用 TouchID:
- iPhone 5s 到 iPhone 8机型
- iOS 8.0及以上系统
FaceID & TouchID
由于 FaceID
和 TouchID
用的同一个框架,因此需要放在一起实现。
- 引入框架
1 | #import <LocalAuthentication/LocalAuthentication.h> |
- LAPolicy
它是一个枚举,根据自己的需要选择 LAPolicy
,它提供了两个值:
- LAPolicyDeviceOwnerAuthenticationWithBiometrics 支持iOS8.0
1 | LAPolicyDeviceOwnerAuthenticationWithBiometrics API_AVAILABLE(ios(8.0), macos(10.12.2)) |
- LAPolicyDeviceOwnerAuthentication 支持iOS9.0
1 | LAPolicyDeviceOwnerAuthentication API_AVAILABLE(ios(9.0), macos(10.11), watchos(3.0)) |
- canEvaluatePolicy
使用 canEvaluatePolicy
方法判断设备是否支持 生物识别
,返回 YES
支持,返回 NO
不支持。
1 | // 初始化错误对象指针 |
- LAError
1 | // 身份验证不成功,因为用户无法提供有效的凭据。 |
- evaluatePolicy
evaluatePolicy
是对生物识别进行验证,返回 YES
验证成功,返回 NO
验证失败。
- LABiometryType
这个属性是在 iOS11.0
新增额属性,用来判断是 TouchID
还是 FaceID
,一般是在生物识别验证成功后才会去判断。
TouchID & FaceID 实际项目中的使用
- 封装
ZJTouchFaceManager
工具类
ZJTouchFaceManager.h 中:
1 | #import <Foundation/Foundation.h> |
ZJTouchFaceManager.m 中:
1 | #import "ZJTouchFaceManager.h" |
- 使用
1 | // 处理点击面容登录按钮的事件 |
Gesture
iOS系统目前没有提供对外调取的API,因此,如果想实现 手势登录
,那么我们就需要去手动绘制一个手势登录视图
- 创建 GestureV 视图
GestureV.h下:
1 | #import <UIKit/UIKit.h> |
Gesture.m中:
1 | #import "GestureV.h" |
- 创建 GestureBtn 按钮
Gesture.h中:
1 | #import <UIKit/UIKit.h> |
Gesture.m中:
1 | #import "GestureBtn.h" |
- 创建 GestureConfig 类
GestureConfig.h中:
1 | #import <Foundation/Foundation.h> |
GestureConfig.m中:
1 | #import "GestureConfig.h" |
- 枚举
1 | /* 手势用处 */ |
- 使用
1 | - (GestureV *)gestureV{ |
- Post title:OC学习55:FaceID & TouchID & Guesture
- Post author:张建
- Create time:2023-05-30 16:57:12
- Post link:https://redefine.ohevan.com/2023/05/30/OC/OC学习55:FaceID & TouchID & Guesture/
- Copyright Notice:All articles in this blog are licensed under BY-NC-SA unless stating additionally.