>

실제로 로컬 인증이 포함 된 앱을 만들고 있습니다.

지금까지 내 코드 :

func authenticateUser() {
        let authenticationContext = LAContext()
        var error: NSError?
        let reasonString = "Touch the Touch ID sensor to unlock."
        // Check if the device can evaluate the policy.
        if authenticationContext.canEvaluatePolicy(LAPolicy.deviceOwnerAuthenticationWithBiometrics, error: &error) {
            authenticationContext.evaluatePolicy( .deviceOwnerAuthenticationWithBiometrics, localizedReason: reasonString, reply: { (success, evalPolicyError) in
                if success {
                    print("success")
                } else {
                    if let evaluateError = error as NSError? {
                        // enter password using system UI 
                    }
                }
            })
        } else {
            print("toch id not available")
           // enter password using system UI
        }
    }

문제는 앱에 터치 ID가 없거나 지문이 잘못되었을 때 암호 잠금 장면을 사용하고 싶다는 것입니다.

이미지처럼 :

어떻게해야합니까?

  • 답변 # 1

    이 시점에서,이 암호 잠금 화면에 앱에액세스 할 수 없어두려워합니다. iOS와 관련이 있습니다. 패스 코드 잠금 장면 (터치 ID 사용)으로 보거나 동작하도록 고유 한 사용자 정의보기 컨트롤러를 빌드해야 할 수도 있습니다. 개인적으로 이것을 달성하기 위해 라이브러리를 사용하는 것이 좋습니다 .PasscodeLock을 시도했지만 제대로 작동합니다.

  • 답변 # 2

    .deviceOwnerAuthentication 를 사용해야합니다   .deviceOwnerAuthenticationWithBiometrics 대신  정책을 평가합니다. 이 매개 변수를 사용하면 시스템은 생체 인증을 사용할 수있는 경우 암호 인증 화면을 표시합니다. 생체 인증을 사용할 수 있지만 실패하면 대체 버튼이 암호 화면으로 리디렉션됩니다. 설명서를 참조하십시오 :

    와이즈 비즈

    따라서 코드는 다음과 같습니다.

    If Touch ID or Face ID is available, enrolled, and not disabled, the user is asked for that first. Otherwise, they are asked to enter the device passcode.

    Tapping the fallback button switches the authentication method to ask the user for the device passcode.

    func authenticateUser() { let authenticationContext = LAContext() var error: NSError? let reasonString = "Touch the Touch ID sensor to unlock." // Check if the device can evaluate the policy. if authenticationContext.canEvaluatePolicy(LAPolicy.deviceOwnerAuthentication, error: &error) { authenticationContext.evaluatePolicy( .deviceOwnerAuthentication, localizedReason: reasonString, reply: { (success, evalPolicyError) in if success { print("success") } else { // Handle evaluation failure or cancel } }) } else { print("passcode not set") } }

  • 이전 c# - [A] MySqlDataMySqlClientMySqlConnection을 [B] MySqlDataMySqlClientMySqlConnection으로 캐스트 할 수 없습니다
  • 다음 androiddatabasesqlitesqliteexception"selectamountfromnilanjan_tablewherename" - 구문 오류 (코드 1)가 표시됩니다