因此,我遵循有关使用生物识别技术对用户进行身份验证的书籍。以下是我在称为生物识别管理器的自定义类中编写的一些代码。
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
任何可能导致此崩溃发生的可能的指示或想法没有什么超级帮助?
答案 0 :(得分:0)
您需要将NSFaceIDUsageDescription
键添加到info.plist
来自https://developer.apple.com/documentation/localauthentication/lacontext
重要
如果您的应用允许进行生物特征认证,请在应用的
NSFaceIDUsageDescription
文件中包含Info.plist
键。否则,授权请求可能会失败。