gpt4 book ai didi

ios - 确定受 Touch ID 保护的钥匙串(keychain)项是否存在?

转载 作者:IT王子 更新时间:2023-10-29 08:19:27 25 4
gpt4 key购买 nike

有没有一种方法可以使用 Touch ID 访问控制提示用户来确定是否已在 iOS 钥匙串(keychain)中设置项目(密码、 token 等)触摸 ID?我们需要在执行操作之前确定凭据是否已保存到钥匙串(keychain)(具有 Touch ID 保护),但我们不想用 Touch ID 提示打断用户。

我尝试了以下...

NSMutableDictionary *query = ...
query[(__bridge id)kSecUseNoAuthenticationUI] = (__bridge id)kCFBooleanTrue;

OSStatus opStatus = SecItemCopyMatching((__bridge CFDictionaryRef)query, NULL);

...

但是,调用此代码时,用户仍会看到 Touch ID 提示。我们不希望在 UI 上显示ANYTHING,只希望在 OSStatus 中返回一个错误,如果 Touch ID 已被要求。

有什么想法吗?

最佳答案

基于 neoneye 的代码和 Swift 3。我添加了 errSecAuthFailed。

    query[kSecClass as String] : kSecClassGenericPassword,
query[kSecAttrService as String] : "serviceName"
query[kSecUseAuthenticationUI as String] = kSecUseAuthenticationUIFail

DispatchQueue.global().async {

var result : AnyObject?
let status = SecItemCopyMatching(query as CFDictionary, &result)

if status == errSecInteractionNotAllowed {

DispatchQueue.main.async {

// item exists
}
} else if status == errSecAuthFailed {

DispatchQueue.main.async {

// item exists but someone removed the touch id or passcode
}
} else if status == errSecItemNotFound {

DispatchQueue.main.async {

// it does not exist
}
} else {

DispatchQueue.main.async {

// another OSStatus
}
}
}

关于ios - 确定受 Touch ID 保护的钥匙串(keychain)项是否存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34207804/

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