【问题标题】:Can't prevent user from cancelling Touch ID无法阻止用户取消 Touch ID
【发布时间】:2016-03-31 02:27:23
【问题描述】:

当显示 Touch ID 警报时,还有一个“取消”按钮。我宁愿不允许用户取消,因为他们被禁止继续。 1.有没有办法去掉“取消”按钮。 2. 如果需要“取消”按钮,如何强制用户重新指纹认证?如果第二次调用 authenticate(),Touch ID API 只会让他们进入。没有替代密码,我不想为它编写另一个视图控制器。

func authenticate() {
    let myContext:LAContext = LAContext()
    let authError:NSErrorPointer = nil
    if (myContext.canEvaluatePolicy(.DeviceOwnerAuthenticationWithBiometrics, error: authError)) {
        myContext.evaluatePolicy(.DeviceOwnerAuthenticationWithBiometrics, localizedReason: "Press fingerprint", reply: { (success:Bool, error:NSError?) -> Void in
            if success == true {
                log.debug("SUCCESSFUL AUTHENTICATION")
                dispatch_async(dispatch_get_main_queue(), { () -> Void in
                    self.performSegueWithIdentifier("showUI", sender: self)
                })
            }
            else {
                log.debug("FAILED AUTHENTICATION")

                self.authenticate()
            }
        })
    }

}

【问题讨论】:

  • 这确实是一种对用户不利的设计——您可能需要从设计的角度重新考虑这一点。
  • 至少考虑允许回退到密码;不要误以为 touchID 比密码更安全,因为如果您知道密码,就可以注册新手指...

标签: ios swift touch-id


【解决方案1】:

您需要将您的失败调用发送到主队列上的self.authenticate

func authenticate() {
    let myContext:LAContext = LAContext()
    let authError:NSErrorPointer = nil
    if (myContext.canEvaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, error: authError)) {
        myContext.evaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, localizedReason: "Press fingerprint", reply: { (success:Bool, error:NSError?) -> Void in
            if success {
                log.debug("SUCCESSFUL AUTHENTICATION")
                DispatchQueue.main.async { 
                    self.performSegueWithIdentifier("showUI", sender: self)
                }
            }
            else {
                log.debug("FAILED AUTHENTICATION")
                DispatchQueue.main.async {
                    self.authenticate()
                }
            }
        })
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 2021-09-08
    • 2020-07-01
    • 1970-01-01
    • 2017-04-20
    • 1970-01-01
    相关资源
    最近更新 更多