wxr
2020-06-15 b8e94316e41eba72d927d5ca7d931b26139ee8ff
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
//
//  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