티스토리 뷰

안녕하세요 :) Zedd입니다.

그냥......막 Touch ID어떻게 쓰는지 그런건 아니구요.. 제가 어제 한번 써봤는데.. issue를 겪어서..

해결방법 ㄱ기록 ~.~



LocalAuthentication사용시 issue 해결




암호입력을 눌러도 아무 창이 안뜬다.



실패하면 위와같이 alert가 뜰텐데..암호입력을 누르면 그냥 저 alert는 사라지고 반응이 없음..

이럴때 2가지 방법이 있습니다. 


1. 저 암호입력 선택지? 저 Action Button을 없애고싶다!!!!!!!!!!!!



  1. let context = LAContext()

    context.localizedFallbackTitle = ""


이렇게 하면


예에ㅔㅔ



2. 진짜 암호입력을 하게 하자.


위에서 암호입력을 눌러도 안뜨는 이유는..



  1. context.evaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, localizedReason: reason, reply: { (succes, error) in

    ...


저 LAPolicy파라미터에 deviceOwnerAuthenticationWithBiometrics를 넣어서 그렇습니다.

저거 말고, 



deviceOwnerAuthentication를 넣어주면...!!


  1.  context.evaluatePolicy(.deviceOwnerAuthentication, localizedReason: reason, reply: { (succes, error) in

    ...




이렇게 비밀번호를 누를 수 있게 뜹니다!!!내 아이폰 비밀번호를 누르면 된답니다 :) 

(저는 위와같이 4자리 Passcode를 치는 화면이 나왔지만, 자신이 설정해놓은 Passcode타입에 맞게 나와요 :) 6자리를 했다면 6자리로 나올것이고, Alphanumeric Passcode로 지정했다면 그에 맞는 화면이 나올거에요!!! )


당연히 1번에서 했던 context.localizedFallbackTitle = "" 코드는 지워야겠죠? deviceOwnerAuthentication로 지정해도 context.localizedFallbackTitle = ""가 설정되어있으면, 암호입력이라는 alertAction자체가 나오지 않으니까요 :)


deviceOwnerAuthenticationWithBiometrics : 사용자가 생체 인식을 사용하여 인증해야 함을 나타냅니다. Touch ID 또는 Face ID를 사용할 수 없거나 등록하지 않은 경우, policy evaluation이 실패합니다. 

Touch ID 및 Face ID인증은 모두 5회 이상 실패하면 다시 사용할 수 없으므로 다시 사용할려면 장치 암호를 입력해야 합니다. 


deviceOwnerAuthenticationdevice password.

Touch ID 또는 Face ID가 등록되어 있고, 사용 중지 되지 않은 경우, 사용자에게 먼저 터치하라는 메세지가 표시됩니다. 그렇지 않은 경우, 장치 암호를 입력하라는 메세지가 표시됩니다. 장치 암호가 활성화되어 있지 않으면, policy evaluation이 실패합니다.  패스코드 인증은 6회 실패 이후에 비활성화 되며, 지연은 점진적으로 증가합니다.



소소한 둘의 차이점..


LocalAuthentication을 사용하실 때, 조금 신경써야 하는 부분?이 있다면 제 생각에는  

설정 > Touch ID 및 암호 >



에서 1) 암호 껐을 때 처리2) 암호가 켜졌을 때의 처리, 그리고 3) 암호가 켜진상태 -> 앱 -> 암호 꺼봄 -> 앱 일때 앱의 상태가 잘 바뀌는지. 이런 모든 경우의 수?를 체크하시면서 하는게 좋을 것 같네요 XD

아무튼..이런게 제 issue였는데 혹시 똑같은 issue를 겪고계신다면 도움이 되었으면 좋겠네요 :)




댓글
댓글쓰기 폼
Total
3,260,988
Today
617
Yesterday
1,782