在我的iOS 7 iPad应用程序中LAContext:evaluatePolicy有时返回SUCCESS而不提示用户触摸ID按钮。 Apple文档称“评估策略可能涉及提示用户......”。
我的身份验证策略设置为LAPolicyDeviceOwnerAuthenticationWithBiometrics,这是我看到的唯一选择。为什么每次调用evaluatePolicy时都不会提示用户触摸ID按钮?有没有办法可以要求这种行为?
答案 0 :(得分:4)
我遇到过类似的问题。 您可能正在声明一个类似
的全局变量let authenticationContext = LAContext()
然后在类方法和函数中使用authenticationContext。
我已经开始在我使用它的每个函数中声明常量,如
func someAuthFunc() {
let authenticationContext = LAContext()
...
我的问题解决了。 每次我请求evaluateForContext时都会被问到......
我希望这会有所帮助。
干杯
答案 1 :(得分:2)
针对有相同问题的人
它仅在iOS 13及更高版本上发生。解决方案尝试像这样两次调用evaluate
函数:
let systemVersion = UIDevice.current.systemVersion
// Trick here: Try to do a pre-evaluate
if systemVersion.compare("13.0", options: .numeric) != .orderedAscending {
context.evaluatePolicy(.deviceOwnerAuthentication, localizedReason: "Authenticate to open the app", reply: { (_, _) in
//Ignore callback here
})
}
context.evaluatePolicy(.deviceOwnerAuthentication, localizedReason: "Authenticate to open the app", reply: { (success, error) in
// Handle callback here
})
到目前为止,已针对所有iOS 13.x.x版本进行了测试并正常运行。
答案 2 :(得分:0)
iOS13更新后,我遇到相同的问题。这不是一个很好的解决方法,但是两次调用评价策略为我解决了这个问题
print(dd.loc[set(dd.index) - set(dd.query('prop1 == False and prop2 == False and prop3 == False ').index), :])
file prop1 prop2 prop3
0 file1 True False False
1 file2 False False True
3 file4 False False True
5 file6 False False True
7 file8 False True False
8 file9 False False True
答案 3 :(得分:0)
这似乎是iOS 13、13.1上的错误,并计划在13.2中修复。我建议您在iOS 13.2 Beta上尝试您的代码,看看它是否更好。