//
|
// HDLTouchID.h
|
// TDTouchID
|
//
|
// Created by HDL on 2019/8/22.
|
// Copyright © 2019 TuDou. All rights reserved.
|
//
|
|
|
#import <LocalAuthentication/LocalAuthentication.h>
|
|
/**
|
* TouchID 状态
|
*/
|
typedef NS_ENUM(NSUInteger, HDLTouchIDState) {
|
/**
|
* 当前设备不支持TouchID
|
*/
|
HDLTouchIDStateNotSupport = 0,
|
/**
|
* TouchID 验证成功
|
*/
|
HDLTouchIDStateSuccess = 1,
|
/**
|
* TouchID 验证失败
|
*/
|
HDLTouchIDStateFail = 2,
|
/**
|
* TouchID 被用户手动取消
|
*/
|
HDLTouchIDStateUserCancel = 3,
|
/**
|
* 用户不使用TouchID,选择手动输入密码
|
*/
|
HDLTouchIDStateInputPassword = 4,
|
/**
|
* TouchID 被系统取消 (如遇到来电,锁屏,按了Home键等)
|
*/
|
HDLTouchIDStateSystemCancel = 5,
|
/**
|
* TouchID 无法启动,因为用户没有设置密码
|
*/
|
HDLTouchIDStatePasswordNotSet = 6,
|
/**
|
* TouchID 无法启动,因为用户没有设置TouchID
|
*/
|
HDLTouchIDStateTouchIDNotSet = 7,
|
/**
|
* TouchID 无效
|
*/
|
HDLTouchIDStateTouchIDNotAvailable = 8,
|
/**
|
* TouchID 被锁定(连续多次验证TouchID失败,系统需要用户手动输入密码)
|
*/
|
HDLTouchIDStateTouchIDLockout = 9,
|
/**
|
* 当前软件被挂起并取消了授权 (如App进入了后台等)
|
*/
|
HDLTouchIDStateAppCancel = 10,
|
/**
|
* 当前软件被挂起并取消了授权 (LAContext对象无效)
|
*/
|
HDLTouchIDStateInvalidContext = 11,
|
/**
|
* 系统版本不支持TouchID (必须高于iOS 8.0才能使用)
|
*/
|
HDLTouchIDStateVersionNotSupport = 12
|
};
|
|
|
/**
|
* 设备支持的生物验证方式
|
*/
|
typedef enum : NSUInteger {
|
/**
|
* 支持TouchID验证
|
*/
|
HDLTouchIDSupperTypeTouchID = 1,
|
/**
|
* 支持FaceID验证
|
*/
|
HDLTouchIDSupperTypeFaceID,
|
/**
|
* 不支持支持验证
|
*/
|
HDLTouchIDSupperTypeNone,
|
}HDLTouchIDSupperType;
|
|
|
typedef NS_ENUM(NSUInteger, HDLFaceIDState) {
|
|
HDLFaceIDStateSuccess = 0,
|
|
HDLFaceIDStateFail= 1
|
};
|
|
@interface HDLTouchID : LAContext
|
|
typedef void (^StateBlock)(HDLTouchIDState state, NSError *error);
|
|
typedef void (^faceIDStateBlock)(HDLFaceIDState state, NSError *error);
|
|
+ (HDLTouchID *)sharedInstance;
|
|
/**
|
* 启动TouchID进行验证
|
* @param descTitle 输入密码按钮的标题
|
* @param mlocalizedReason Touch显示的描述
|
* @param block 回调状态的block
|
*/
|
- (void)HDL_showTouchIDWithDescribe:(NSString *)descTitle mlocalizedReason:(NSString *)mlocalizedReason blockState:(StateBlock)block;
|
|
/**
|
* 启动FaceID
|
* @param mlocalizedReason FaceID显示的描述
|
* @param block 验证状态
|
*/
|
- (void)HDL_showFaceIDWithDescribe:(NSString *)mlocalizedReason blockState:(faceIDStateBlock)block;
|
|
|
// 判断设备支持哪种认证方式 TouchID & FaceID
|
- (HDLTouchIDSupperType)HDL_canSupperBiometrics;
|
@end
|