如何使用 touchIDAuthenticationAllowableReuseDuration
Posted
技术标签:
【中文标题】如何使用 touchIDAuthenticationAllowableReuseDuration【英文标题】:How to use touchIDAuthenticationAllowableReuseDuration 【发布时间】:2018-12-05 10:52:20 【问题描述】:当应用程序启动或何时进入前台时,我正在通过 LAContext 对用户进行身份验证。如果设备被锁定,则用户将被要求两次授权。为了避免这种行为,我将 context.touchIDAuthenticationAllowableReuseDuration 值设置为 240,但它没有按预期工作。用户仍然需要授权自己两次。 我做错了什么?
import LocalAuthentication
class AccessControl
internal var context = LAContext()
private var policy: LAPolicy = .deviceOwnerAuthentication
private var reason: String = NSLocalizedString("auhenticationLocalizedFallbackTitle", comment: "")
init()
context.touchIDAuthenticationAllowableReuseDuration = 240
func evaluateUserWithBiometricsOrPasscode(success: @escaping () -> Void, error: @escaping () -> Void)
guard context.canEvaluatePolicy(policy, error: nil) else
error()
return
context.evaluatePolicy(policy, localizedReason: reason) eStatus, eError in
DispatchQueue.main.async
if eStatus
success()
else
error()
【问题讨论】:
【参考方案1】:您需要每次都使用相同的 LAContext
对象才能获得该行为。
class AccessControl
// MARK: - Singleton
public static let shared = AccessControl()
// Policy
private var policy: LAPolicy = .deviceOwnerAuthentication
// Reason
private var reason: String = NSLocalizedString("auhenticationLocalizedFallbackTitle", comment: "")
// Context
lazy var context: LAContext =
let mainContext = LAContext()
if #available(ios 9.0, *)
// specify your interval
mainContext.touchIDAuthenticationAllowableReuseDuration = 60
return mainContext
()
// Evaluate
func evaluateUserWithBiometricsOrPasscode(success: @escaping () -> Void, error: @escaping () -> Void)
guard context.canEvaluatePolicy(policy, error: nil) else
error()
return
context.evaluatePolicy(policy, localizedReason: reason) eStatus, eError in
DispatchQueue.main.async
if eStatus
success()
else
error()
并像下面这样调用这个函数:这也适用于 FaceID 身份验证。
AccessControl.shared.evaluateUserWithBiometricsOrPasscode(success:
)
【讨论】:
以上是关于如何使用 touchIDAuthenticationAllowableReuseDuration的主要内容,如果未能解决你的问题,请参考以下文章
如何在自动布局中使用约束标识符以及如何使用标识符更改约束? [迅速]
如何使用 AngularJS 的 ng-model 创建一个数组以及如何使用 jquery 提交?