FaceID/TouchID成功案例不断提示进一步认证
Posted
技术标签:
【中文标题】FaceID/TouchID成功案例不断提示进一步认证【英文标题】:FaceID/TouchID success case keeps prompting for further authentication 【发布时间】:2018-01-25 19:25:21 【问题描述】:我已经在视图控制器上实现了密码/TouchID/FaceID,当我遇到成功案例时,我希望提示停止触发,但它只是一遍又一遍地触发。
在我的 VC 中:
var context: LAContext!
func authenticateReturningUser()
context = LAContext()
var error: NSError?
if context.canEvaluatePolicy(.deviceOwnerAuthentication, error: &error)
let reason = "Verify that this is your device to continue."
context.evaluatePolicy(.deviceOwnerAuthentication, localizedReason: reason) success, error in
DispatchQueue.main.sync
guard success else
guard let error = error else
// show error
return
switch error
case LAError.userCancel:
// do stuff
return
default: return
print("success")
如果用户成功授权,提示应该触发一次,而不是再次触发
编辑:
authenticateReturningUser
从 AppDelegate 的 applicationDidBecomeActive
函数中调用:
self.coverVC?.completionHandler = self.removeBackgroundVC()
self.coverVC?.authenticateReturningUser()
【问题讨论】:
嗨,Zack,你能找到解决这个问题的方法吗? 【参考方案1】:据我所知,当显示 Touch ID 提示时,您的应用会变为非活动状态。因此,当提示消失时,您的应用会再次激活,再次触发 App Delegate 的 applicationDidBecomeActive
。
您可以考虑引入一个标志来存储应用程序是否因为 Touch ID/Face ID 等或其他原因而变得不活动,并在 applicationDidBecomeActive
中使用它来决定是否应该触发身份验证。
【讨论】:
啊,有趣!谢谢【参考方案2】:你在哪里打电话给authenticateReturningUser()
?您可能希望创建一个静态布尔值authenticated
,如果为 false,则允许调用 authenticateReturningUser()
,如果为 true,则跳过调用,并在调用函数一次后设置 authenticated = true
。
【讨论】:
我更新了我原来的问题来解决你的问题以上是关于FaceID/TouchID成功案例不断提示进一步认证的主要内容,如果未能解决你的问题,请参考以下文章
NativeScript Sidekick Publishing IOS 不断提示输入密码