ios - 无法访问钥匙串项 iOS
问题描述
我们在钥匙串中存储了一些用户信息。我们收到报告称,对于某些将数据存储在钥匙串中的用户,检索失败。
在什么情况下 kSecClassGenericPassword 属性会失败?
代码:
let query = [
kSecClass as String : kSecClassGenericPassword,
kSecAttrAccount as String : key,
kSecReturnData as String : kCFBooleanTrue!,
kSecMatchLimit as String : kSecMatchLimitOne ] as [String : Any]
var dataTypeRef: AnyObject? = nil
let status: OSStatus = SecItemCopyMatching(query as CFDictionary, &dataTypeRef)
店铺代码:
func save(key: String, data: Data) -> OSStatus {
let query = [
kSecClass as String : kSecClassGenericPassword as String,
kSecAttrAccount as String : key,
kSecValueData as String : data ] as [String : Any]
SecItemDelete(query as CFDictionary)
return SecItemAdd(query as CFDictionary, nil)
}
提一下:检索数据的代码每秒可以调用多次。这会“强调”钥匙链吗?
解决方案
根据您在创建项目时指定的访问权限,可能无法检索它,例如,如果用户没有密码、手机被锁定、关闭或更改生物识别,或者从备份中恢复另一部手机上的应用程序.
推荐阅读
- javascript - createStripeCharge gcloud Javascript函数错误未定义问题
- ios - Interface Builder Swift 4.2 上的自定义 UILabel 和显示属性
- linux - 如何使用 JMeter 在 Linux (Ubuntu) 上执行 IP 地址欺骗?(JMeter 未创建绑定 IP)
- python - Pandas:使用 groupby 重新创建 pivot_tables
- json - 在 Swift 中使用 JSONDecoder 处理错误
- django - Django 模型动态选择迁移
- css - Reactjs - 使用滑入滑出动画将一个 div 转换到另一个顶部
- redis - 如何通过 CloudFormation 模板将 Redis AUTH 令牌添加到 ElastiCache?
- java - 从 ArrayList of Sets 中删除重复项 | 数组列表
> 温度 - c - 在此系统中不断收到此错误“链接器命令失败,退出代码为 1”