// // HDLTouchID.h // TDTouchID // // Created by HDL on 2019/8/22. // Copyright © 2019 TuDou. All rights reserved. // #import /** * 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