2016-06-17 9 views
0
- (void)touchIdIntegration{ 
    LAContext *myContext = [[LAContext alloc] init]; 
    NSError *authError = nil;  
    if ([myContext canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&authError]) { 

    [myContext evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics 
       localizedReason:@"Authenticate via Touch ID to unlock the app" 
         reply:^(BOOL success, NSError *error) { 

          if (success) { 
           dispatch_async(dispatch_get_main_queue(), ^{ 

            [[AppManager instance].helpManager setDontShowInterstialAd:TRUE]; 
            [[AppManager instance].cycleManager setUserAuthenticated:TRUE]; 
            [self.delegate showAlertViewsOnServerData]; 

           }); 
          } else { 
           dispatch_async(dispatch_get_main_queue(), ^{ 


            switch (error.code) { 
             case kLAErrorAuthenticationFailed: 
              NSLog(@"kLAErrorAuthenticationFailed"); 
              break; 
             case kLAErrorTouchIDNotEnrolled: 
              NSLog(@"kLAErrorTouchIDNotEnrolled"); 
              break; 
             case LAErrorPasscodeNotSet: 
              NSLog(@"LAError code "); 
              break; 
             default: 
              break; 
            } 
           }); 
          } 
         }]; 
    } else { 
    dispatch_async(dispatch_get_main_queue(), ^{ 
     self.m_imgFingerPrint.hidden = YES; 
     NSLog(@"LAError code %ld",authError.code); 
     NSString *alertMessage =nil; 

     switch (authError.code) { 
      case kLAErrorAuthenticationFailed: 
      { 
       alertMessage = @"kLAErrorAuthenticationFailed" ; 

     } 
       break; 
      case kLAErrorTouchIDNotEnrolled: 
       alertMessage = @"kLAErrorTouchIDNotEnrolled" ; 
       break; 
      case LAErrorPasscodeNotSet: 
       alertMessage = @"LAErrorPasscodeNotSet" ; 
       break; 
      default: 
       break; 
     } 
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Error" 
                    message:alertMessage 
                    delegate:self 
                  cancelButtonTitle:@"OK" 
                  otherButtonTitles:nil, nil]; 
       [alertView show]; 

    }); 
} 
} 

사용자가이 화면으로 이동할 때마다이 팝업이 표시되는 것을 원하지 않습니다. 알려 주실 수 있습니까? 사전에 enter image description hereLAContext가 매번 팝업을 표시합니다.

어쨌든 감사 :

아래의 스크린 샷을 찾아주십시오.

답변

0

이 코드 viewDidLoad 또는 viewDidAppear을 쓰지 마십시오. touchID를 반드시 요청해야하는 경우에만 작성하십시오.

+0

예. 물론 viewDidLoad 또는 viewDidAppear에 없습니다. –

+0

이 함수를 어디에서 실행하려고합니까? – Dershowitz123

+0

이 문제는 한 클래스에이 코드를 작성하고이 클래스의 다른 클래스를 상속하는 경우에도 발생할 수 있습니다. – Dershowitz123