我正在研究在访问钥匙串时引入 Touch ID 的新用户访问控制能力。
这是场景...
- 我已经使用钥匙串查询中的新访问控制对象将用户密码写入钥匙串。
- 下次我尝试返回这个秘密时,我将按预期看到 Touch ID / Passcode 界面。
- 下次我尝试将相同的数据写入钥匙串时,我想先检查它是否已经存在。
- 即使我将返回数据属性指定为 false,这也会显示 Touch ID 界面。但这不是我想要的。
这是预期的行为还是我错过了禁用 Touch ID 界面的特定属性?
我认为您可以通过执行以下类似操作来实现:
// --- Add this code to your save method
// Adds a new keychain item
let status: OSStatus = SecItemAdd(keychainQuery as CFDictionaryRef, nil)
if status == errSecSuccess {
println("Keychain Add: \(KeychainResultCode(rawValue: status)?.description)")
return true
} else if status == errSecDuplicateItem {
// perform an update
return self.update(key, data: data)
} else {
return false
}
以上是否满足您的需求?