From 3e8437ae559487362fae3525beb79c534c213a51 Mon Sep 17 00:00:00 2001
From: 单军华
Date: Thu, 12 Jul 2018 13:44:34 +0800
Subject: [PATCH] bug修复和功能优化

---
 screendisplay/screendisplay/Classes/Helpers/TDTouchID.m |  125 +++++++++++++++++++++++++++++++++++++++++
 1 files changed, 125 insertions(+), 0 deletions(-)

diff --git a/screendisplay/screendisplay/Classes/Helpers/TDTouchID.m b/screendisplay/screendisplay/Classes/Helpers/TDTouchID.m
new file mode 100755
index 0000000..be20502
--- /dev/null
+++ b/screendisplay/screendisplay/Classes/Helpers/TDTouchID.m
@@ -0,0 +1,125 @@
+
+
+#import "TDTouchID.h"
+
+@implementation TDTouchID
+
++ (void)td_showTouchIDWithDescribe:(NSString *)desc BlockState:(StateBlock)block{
+    
+    if (NSFoundationVersionNumber < NSFoundationVersionNumber_iOS_8_0) {
+        
+        dispatch_async(dispatch_get_main_queue(), ^{
+            NSLog(@"���������������������TouchID (������������iOS 8.0������������)");
+            block(TDTouchIDStateVersionNotSupport,nil);
+        });
+        
+        return;
+    }
+    
+    LAContext *context = [[LAContext alloc] init];
+    
+    context.localizedFallbackTitle = desc ?: @"������Home���������������������";
+    
+    NSError *error = nil;
+    
+    if ([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error]) {
+        
+        [context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:desc ?: @"������Home���������������������" reply:^(BOOL success, NSError * _Nullable error) {
+            
+            if (success) {
+                dispatch_async(dispatch_get_main_queue(), ^{
+                    NSLog(@"TouchID ������������");
+                    block(TDTouchIDStateSuccess,error);
+                });
+            }else if(error){
+                
+                switch (error.code) {
+                    case LAErrorAuthenticationFailed:{
+                        dispatch_async(dispatch_get_main_queue(), ^{
+                            NSLog(@"TouchID ������������");
+                            block(TDTouchIDStateFail,error);
+                        });
+                        break;
+                    }
+                    case LAErrorUserCancel:{
+                        dispatch_async(dispatch_get_main_queue(), ^{
+                            NSLog(@"TouchID ���������������������");
+                            block(TDTouchIDStateUserCancel,error);
+                        });
+                    }
+                        break;
+                    case LAErrorUserFallback:{
+                        dispatch_async(dispatch_get_main_queue(), ^{
+                            NSLog(@"���������������TouchID,������������������������");
+                            block(TDTouchIDStateInputPassword,error);
+                        });
+                    }
+                        break;
+                    case LAErrorSystemCancel:{
+                        dispatch_async(dispatch_get_main_queue(), ^{
+                            NSLog(@"TouchID ��������������� (���������������,������,������Home������)");
+                            block(TDTouchIDStateSystemCancel,error);
+                        });
+                    }
+                        break;
+                    case LAErrorPasscodeNotSet:{
+                        dispatch_async(dispatch_get_main_queue(), ^{
+                            NSLog(@"TouchID ������������,������������������������������");
+                            block(TDTouchIDStatePasswordNotSet,error);
+                        });
+                    }
+                        break;
+                    case LAErrorTouchIDNotEnrolled:{
+                        dispatch_async(dispatch_get_main_queue(), ^{
+                            NSLog(@"TouchID ������������,������������������������TouchID");
+                            block(TDTouchIDStateTouchIDNotSet,error);
+                        });
+                    }
+                        break;
+                    case LAErrorTouchIDNotAvailable:{
+                        dispatch_async(dispatch_get_main_queue(), ^{
+                            NSLog(@"TouchID ������");
+                            block(TDTouchIDStateTouchIDNotAvailable,error);
+                        });
+                    }
+                        break;
+                    case LAErrorTouchIDLockout:{
+                        dispatch_async(dispatch_get_main_queue(), ^{
+                            NSLog(@"TouchID ���������(������������������TouchID������,������������������������������������)");
+                            block(TDTouchIDStateTouchIDLockout,error);
+                        });
+                    }
+                        break;
+                    case LAErrorAppCancel:{
+                        dispatch_async(dispatch_get_main_queue(), ^{
+                            NSLog(@"��������������������������������������� (���App������������������)");
+                            block(TDTouchIDStateAppCancel,error);
+                        });
+                    }
+                        break;
+                    case LAErrorInvalidContext:{
+                        dispatch_async(dispatch_get_main_queue(), ^{
+                            NSLog(@"��������������������������������������� (LAContext������������)");
+                            block(TDTouchIDStateInvalidContext,error);
+                        });
+                    }
+                        break;
+                    default:
+                        break;
+                }
+            }
+        }];
+        
+    }else{
+        
+        dispatch_async(dispatch_get_main_queue(), ^{
+            NSLog(@"���������������������TouchID");
+            block(TDTouchIDStateNotSupport,error);
+        });
+        
+    }
+    
+}
+
+
+@end

--
Gitblit v1.8.0