본문 바로가기

IT/iOs

iOS13 touchid issue

iOS13에서 지문인식 문제

 

안녕하세요 이번 포스팅은 지문 인식 기능 이상으로 삽질한 내용과 제가 내린 결론을 공유하기 위해 작성하겠습니다.

iOs13으로 업데이트 후 지문인식 기능이 있는 앱이 디버깅 중 이상해 보이기 시작했습니다.

기분 탓이겠지 하며 몇 번을 넘어갔으나 불길한 예감은 여전했고 정신 차리고 살펴본 결과 역시 버그였습니다.

왜 안좋은 예감은 항상 맞는 걸까요 좋은 예감이란 것도 한번 느껴보고 싶습니다. 

 

 

지문인식, 페이스아이디 기능 등은 앱에서 대체로 로그인 기능을 사용자로 하여금 손쉽게 하기 위해서 사용합니다.

로그인이랑 해당 서비스를 사용하게 만드는 부분으로 서비스에 로그인 기능이 있다면 제일 0순위로 중요한 기능이라고 해도 과언이 아닙니다.

그래서 해당 기능에 문제가 생기면 엄청난 악성 리뷰가 기대되고 이거 왜 이러냐는 말을 윗선에서 내려오게 만들 수 있는 아주 멋진 에러입니다.

 

침착하고 현상을 말씀드리자면 지문인식 alert이 (지문 모양 있는 안내창) 나타났다가 바로 사라지질 않나

LAContext의 evaluatePolicy:localizedReason:reply:을 호출했는대도 touchID alert가 보이지 않습니다.

왜 안보이지 하다가 센서에 손을 우연히 대보았더니 다음 단계로 넘어갑니다.

 

 

그래서 유추할 수 있는 것은 지문인식 알럿 창은 뜬것인데 보이지만 않는다는 것이죠

그 연봉 높은 애플 개발자분들 왜 그러십니까

 

혹시나 해서 다른 생체인식 기능이 있는 앱들은 어떨까 테스트해본 결과 다른 앱에서도 생체인식 기능 이상 현상이 발생했습니다. 

뱅크샐러드랑 토스를 테스트해봤습니다.

 

 

 

테스트 환경 :
iOS Version : 13.1.2
기기 모델 : 7+
빌드 환경 : Xcode 11.0, macOS Catalina 10.15

 

 

해결법은 두 가지가 있습니다.

 

 

 

 

 

첫 번째는 엑스 코드를 11.1로 업데이트하는 것입니다.

두 번째는 코드로 아래와 같이 iOS13일 때 evaluatePolicy:localizedReason:reply를 두 번 호출해줍니다.

이상하지만 동작이 되긴 합니다. 하지만 첫 번째 방법이 훨씬 낫겠습니다.

 

LAContext evaluatePolicy not showing TouchID prompt

 

We are using LAContext evaluatePolicy API to show the TouchID prompt in our App.

  • If we place our finger for authentication, then we can see the TouchID prompt and it completes the authentication.

  • What's even more strange is that when we can't see the pop-up window, then shake the device can make it appear.

 

 

 

I fix this bug.

 

LAContext *context = [[LAContext alloc]init];

    NSError *error;

    if ([fallbackTitle isKindOfClass:NSString.class]) {

        context.localizedFallbackTitle = fallbackTitle;

    }else {

        context.localizedFallbackTitle = @"";

    }

    BOOL canEvaluate = [context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error];

    if (canEvaluate) {

         // It's working !!!

        if (@available(iOS 13.0, *)) {

              [context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics

                             localizedReason:[self biometricsText]

                                       reply:^(BOOL success, NSError * _Nullable error)

                      {

              }];

        }

        [context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics

                localizedReason:[self biometricsText]

                          reply:^(BOOL success, NSError * _Nullable error)

         {

             //TODO:

          

         }];

    }

 

 

--------

 

19.11.09 추가 내용입니다.

xcode를 업데이트해도 같은 현상이 또 발생을 하더군요 

결국 ios 13.0과 13.1에만 두 번 호출하는 방법을 적용했습니다.

 

 

 

https://forums.developer.apple.com/thread/121149
https://forums.swift.org/t/ios13-touchid-lacontext-calling-evaluatepolicy-not-showing-up-touch-id-authentication-dialog/29254

'IT > iOs' 카테고리의 다른 글

Can't end BackgroundTask error  (7) 2019.10.31
SceneDelegate란  (4) 2019.10.30
맥 카탈리나 코코아팟 오류  (0) 2019.10.19
Realm 사용법  (0) 2019.10.12
Multiple commands produce Error 해결법  (1) 2019.10.11