Я хочу аутентифицировать мое приложение, такое как Google Pay или WhatsApp, когда вы откроете свое приложение, оно запросит аутентификацию touchid / faceid.Проблема в том, что, когда вы возвращаетесь из фона на передний план, мое приложение запрашивает аутентификацию только в первый раз, а затем оно никогда не запрашивает аутентификацию, когда возвращается с фона на передний план.Я использую (touchIDAuthenticationAllowableReuseDuration = 60 секунд), но через 60 секунд он не запрашивает аутентификацию, он просто проверяет аутентификацию.
class ViewController: UIViewController {
public static let shared = ViewController()
var authError : NSError?
var authReason = "To Access secure Data"
lazy var context: LAContext = {
let mainContext = LAContext()
if #available(iOS 9, *){
mainContext.touchIDAuthenticationAllowableReuseDuration = 60
}
return mainContext
}()
override func viewDidLoad() {
super.viewDidLoad()
evaluateUserWithBiometricsOrPasscode()
}
func evaluateUserWithBiometricsOrPasscode() -> Void{
if context.canEvaluatePolicy(LAPolicy.deviceOwnerAuthentication, error: &authError){
self.evalute(authReason: authReason)
}else {
// error
}
}
func evalute(authReason : String ) -> Void{
context.evaluatePolicy(LAPolicy.deviceOwnerAuthentication, localizedReason: authReason){[weak self] success, error in
DispatchQueue.main.async {
if success{
print("Touch ID Authentication Succeeded")
}
else{
print("Touch ID Authentication Failed")
}
}
}
}
}
, вызывая этот метод в "
func applicationWillEnterForeground(_ application: UIApplication)" from AppDelegate.swift:
ViewController.shared.evaluateUserWithBiometricsOrPasscode()
1-й раз открытьприложение, которое запрашивается для аутентификации: результат - «Аутентификация Touch ID успешно завершена»
2-й раз и т. д. - перейти на задний план, а затем вернулся на передний план: результат - «Аутентификация Touch ID успешно завершена» без запросаtouchid