我正在尝试获取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
,这导致了一个错误的返回。为什么会发生这种情况?我如何修复这段代码,使它像预期的那样工作?
上面的代码来自this link,以防这个人正在观看,谢谢。
3条答案
按热度按时间t9aqgxwy1#
Touch ID和Face ID LocalAuthentication的工作代码
(swift 4.0和5.0+代码)
注:隐私- Face ID使用说明在Info.plist中添加键
使用
字符串
本地认证功能
型
使用消息处理错误代码
型
显示警报消息
型
yvfmudvl2#
你应该使用闭包来获得计算结果。注意,
canEvaluatePolicy
的返回值是Bool
,但是evaluatePolicy
没有返回值,因为它接受一个闭包。你可以修改你的方法来包含一个闭包而不是return。
字符串
在应用程序的其他部分,您之前使用返回值的地方,现在必须使用闭包,如:
型
t40tm48m3#
x1c 0d1x的数据
注意:隐私- Face ID使用说明密钥添加在Info.plist中
字符串
用法
型