1

私のアプリケーションでは、 を使用して Face ID でログインしようとしましたがevaluatePolicy、1 回または 2 回ログインすると、コールバックでエラーが発生します。そのエラーでは、別の非同期完了ハンドラーを呼び出し、最終的に を呼び出しますcanEvaluatePolicy。その後、アプリがフリーズし、それ以上 UI を操作できなくなります。なぜこれが起こるのでしょうか?スレッドセーフと関係がありますか?この問題を再現するサンプル コードは、ここにあります。

参照用のサンプル コードのコード スニペットを次に示します。

    let localAuthenticationContext = LAContext()
    if localAuthenticationContext.canEvaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, error: nil) {

        localAuthenticationContext.evaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, localizedReason: "To access secure data") { success, evaluateError in

            if success {
                print("Success")
            } else {
                print("Face ID Error")
                let context = LAContext()
                let status = context.canEvaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, error: nil)
                print("Status: \(status)")
            }
        }
    }

iPhone XシミュレーターでXcode 9.1 Beta 2を使用しています。

4

0 に答える 0