Swift & deviceOwnerAuthentication : 如何直接查看密码认证板而不先通过生物识别认证?

问题描述

我正在尝试使用设备密码对用户进行身份验证。而且我想直接查看密码板。但是对于下面的代码,我总是必须先通过生物特征身份验证,然后才能通过密码进行身份验证。如何直接获取密码板?

import UIKit
import LocalAuthentication

class ViewController: UIViewController {

    @IBOutlet weak var userButton: UIButton!
    
    @IBOutlet weak var resultLabel: UILabel!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
    }

    @IBAction func buttonpressed(_ sender: UIButton) {
        authenticateUser()
    }
    
    func authenticateUser() {
        let context = LAContext()
        
        context.evaluatePolicy(LAPolicy.deviceOwnerAuthentication,localizedReason: "Please authenticate to proceed.") { (success,error) in
            dispatchQueue.main.async {
                if success {
                    self.resultLabel.text = "Success"
                    print("Success")
                }else{
                    self.resultLabel.text = "Failed"
                    print("Failed")
                    return
                }
            }
            
            
            
            
        }
    }
    
}

谢谢

解决方法

如果设备具有生物识别功能且用户已注册,则仅使用密码的本地身份验证不可用。

您可以通过使用 LAPolicy.deviceOwnerAuthenticationWithBiometrics 来防止回退到密码,但没有直接进入密码选项的政策。

LAPolicy.deviceOwnerAuthentication 将始终先尝试生物识别(如果可用),然后再返回设备密码。