1

因此,我在使用生物识别技术对用户进行身份验证方面遵循这些书籍。下面是我在一个名为 biometrics manager 的自定义类中编写的一些代码。

func authenticateUser(completion: @escaping (_ result: BiometricsStatus) -> Void) {

    DispatchQueue.main.async {

        guard self.deviceHasBiometricCapabilities() else { completion(.fail(error: .touchIDNotAvailable)); return }

        let authMethod = self.biometricType() == .faceID ? "Face ID" : "Touch ID"
        let loginMessage = "\(authMethod) to sign in"

        self.context.evaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, localizedReason: loginMessage) { success, evaluateError in

            if success {
                completion(.success)
                return
            }

            if let error = evaluateError {
                completion(.fail(error: self.getBiometricsError(from: error)))
                return

            }
        }
    }
} 

我已经调试了我的应用程序,它似乎导致了评估策略行的崩溃,我启用了异常断点来尝试捕获崩溃,但我在控制台日志中什么也没有收到。我似乎在控制台中唯一得到的是以下内容。

Message from debugger: Terminated due to signal 9

对于可能导致此崩溃发生的任何可能的指针或想法,哪一个不是超级有用的?

4

1 回答 1

2

您需要将NSFaceIDUsageDescription密钥添加到您的info.plist

来自https://developer.apple.com/documentation/localauthentication/lacontext

重要的

如果您的应用允许生物识别身份验证,请将NSFaceIDUsageDescription密钥包含在您的应用文件中。Info.plist否则,授权请求可能会失败。

于 2018-08-09T16:15:17.123 回答