9

以下の関数でFace IDかTouch IDが成功したか取得しようとしています

func authenticate() -> Bool{

    let context = LAContext()
    var error: NSError?

    guard context.canEvaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, error: &error) else {
        return false
    }
    var returnValue = false
    let reason = "Face ID authentication"
    context.evaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, localizedReason: reason) 
    {
        isAuthorized, error in
        guard isAuthorized == true else {
            return print(error)
        }
        returnValue = true
        print("success")
    }
    return returnValue        
}

ただし、このコードで成功した場合でも、returnValue = true後で渡されるをスキップし、false が返されます。なぜこれが起こるのですか?このコードを修正して、想定どおりに機能させるにはどうすればよいですか?

上記のコードは、この人が見ていた場合に備えて、このリンクからのもの です。ありがとうございます。

4

2 に答える 2