当TouchID在iOS 9上被锁定时,LAContext.canEvaluatePolicy返回true

时间:2017-02-03 04:14:52

标签: ios iphone touch-id

我正在玩iOS 9和iOS 10上的LocalAuthentication。并注意到以下行为上的差异。在iOS 9中,如果我执行下面显示的代码,并通过使用错误的手指进行身份验证而导致touchID被锁定,则即使在Touch ID被锁定后调用context.canEvaluatePolicy也会返回true,然后调用上下文.evaluatePolicy导致设备提示我输入设备密码。

在iOS 10中,如果我锁定TouchID,则canEvaluatePolicy返回false,错误的代码指示TouchIDLockout。

TouchIDLockout是在iOS 9中引入的,所以我希望在iOS 9中获得该错误代码,但目前还没有。还有其他人经历过这个吗?

@IBAction func test(_ sender : UIButton) {
    let context = LAContext()
    var error : NSError? = nil
    if  context.canEvaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, error: &error) {
            context.evaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, localizedReason: "Boom", reply: { (success, error) in
                let code = (error as? LAError)?.code.rawValue
                sender.setTitle(String(code ?? 2), for: .normal)
            })
        }
    }

}

}

1 个答案:

答案 0 :(得分:0)

在Apple Dev论坛中看到这个是iOS 9中的一个错误,在iOS 10中修复了。

https://forums.developer.apple.com/message/193538#193538