gpt4 book ai didi

ios - 如何在 3 次错误的触摸/面部 ID 识别后忽略 iOS 设备 PIN 提示

转载 作者:行者123 更新时间:2023-11-28 23:57:25 33 4
gpt4 key购买 nike

我们的应用程序从钥匙串(keychain)中保存和检索项目,以便使用生物识别技术进行身份验证。

在第三次错误尝试时,我被重定向到设备 PIN 码。相反,想提示一条消息,指出 3 次错误尝试。

检索项目的代码

OSStatus status = SecItemCopyMatching((__bridge CFDictionaryRef)(query), &dataTypeRef);

看到了美国银行应用程序的预期行为,其中显示一条消息,提示用户在 3 次错误尝试后需要手动登录

最佳答案

我假设您在您的 SecAccessControlCreateWithFlags 项中使用 kSecAccessControlUserPresence 选项,该选项是您查询的一部分,用于将项添加到钥匙串(keychain)。某处你有这样的东西:

SecAccessControlRef access = SecAccessControlCreateWithFlags(nil,
kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly,
kSecAccessControlUserPresence,
nil);

kSecAccessControlUserPresence 选项的文档说明:

Constraint to access an item with either biometry or passcode.

它会根据需要回退到密码。要将其限制为仅使用生物识别技术,您应该使用 kSecAccessControlBiometryAnykSecAccessControlBiometryCurrentSet 标志。两者都需要 TouchID 或 FaceID 来解锁项目。 kSecAccessControlBiometryAny 需要任何匹配的生物特征,即使它们在设置钥匙串(keychain)项后发生更改。 kSecAccessControlBiometryCurrentSet 如果用户在 TouchID 中添加或移除手指或重新注册 FaceID,则会导致项目失效。

对于 kSecAccessControlBiometryAny,您应该将上面的访问控制代码更改为:

SecAccessControlRef access = SecAccessControlCreateWithFlags(nil,
kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly,
kSecAccessControlBiometryAny,
nil);

或者kSecAccessControlBiometryCurrentSet:

SecAccessControlRef access = SecAccessControlCreateWithFlags(nil,
kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly,
kSecAccessControlBiometryCurrentSet,
nil);

有关 SecAccessControlCreateFlags 的 Apple 文档:https://developer.apple.com/documentation/security/secaccesscontrolcreateflags?changes=_2&language=objc

关于ios - 如何在 3 次错误的触摸/面部 ID 识别后忽略 iOS 设备 PIN 提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50820505/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com