You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

FaceID三次验证失败弹出提示后,能否移除‘Enter Passcode’选项?

关于iOS FaceID验证失败后移除“输入密码”选项的问题

无法实现移除系统弹窗中“Enter Passcode”(输入密码)选项的需求,苹果不允许开发者自定义该系统级验证弹窗的UI元素。

原因说明

FaceID验证失败后弹出的带密码选项窗口,是iOS系统通过LocalAuthentication框架提供的原生安全验证组件。为保证生物识别验证流程的安全性、一致性,苹果完全掌控这个弹窗的内容与交互逻辑,开发者没有权限修改弹窗内的按钮数量、文本或隐藏特定选项。

你代码中使用的.deviceOwnerAuthenticationWithBiometrics政策,本身就包含“生物识别失败后自动 fallback 到密码验证”的系统默认逻辑,该流程不可被干预。

替代实现方案

如果希望实现“连续3次验证失败后仅保留取消选项”的效果,可以通过自定义验证流程绕开系统弹窗:

  1. 跟踪FaceID验证的失败次数
  2. 当失败次数达到3次时,不再调用系统的evaluatePolicy方法,而是自定义弹出仅含“取消验证”按钮的提示窗口

示例代码如下:

private var biometryFailureCount = 0

func doBiometry(completionHandler: @escaping(Bool) -> Void){
    let context = LAContext()
    var authError: NSError?

    guard context.canEvaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, error: &authError) else {
        completionHandler(false)
        return
    }

    // 连续失败3次,显示自定义弹窗
    if biometryFailureCount >= 3 {
        let alert = UIAlertController(title: "FaceID验证失败", message: "连续3次验证未通过,请稍后再试", preferredStyle: .alert)
        alert.addAction(UIAlertAction(title: "取消验证", style: .cancel) { _ in
            completionHandler(false)
            self.biometryFailureCount = 0 // 重置失败次数
        })
        // 适配不同场景的弹窗展示,此处以rootViewController为例
        UIApplication.shared.keyWindow?.rootViewController?.present(alert, animated: true)
        return
    }

    context.evaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, localizedReason: "请验证FaceID以继续") { [weak self] (success, error) in
        guard let self = self else { return }
        if success {
            self.biometryFailureCount = 0
            completionHandler(true)
        } else {
            // 仅在识别失败时累加次数,用户主动取消则重置
            if let error = error as NSError?, error.code != LAError.userCancel.rawValue {
                self.biometryFailureCount += 1
            } else {
                self.biometryFailureCount = 0
            }
            completionHandler(false)
        }
    }
}

这种方式是通过主动拦截系统验证流程实现的,并非修改系统原生弹窗。

内容的提问来源于stack exchange,提问作者Beginnerrrrrr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 20:12:40