假设以下情况:
1. 用户重新启动了他/她的iPhone。
2. 用户让设备处于锁定状态,没有解锁它。
3. 服务器在设备上发送了(静默)推送通知(或任何其他使应用程序在后台唤醒的事件,如Apple Watch扩展请求数据等)。
4. 应用程序唤醒并尝试访问使用kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly可访问性存储的Keychain项。
现在,由于设备尚未解锁,因此不应该能够访问Keychain项。如何正确检查这种情况?
注意:在我的情况下,钥匙串中存储的某个项目的存在确定应用程序是否处于“活动”状态,因此我需要停止此检查,否则我的应用程序将假定它不处于活动状态(无法读取值)并执行初始化步骤...
现在,由于设备尚未解锁,因此不应该能够访问Keychain项。如何正确检查这种情况?
注意:在我的情况下,钥匙串中存储的某个项目的存在确定应用程序是否处于“活动”状态,因此我需要停止此检查,否则我的应用程序将假定它不处于活动状态(无法读取值)并执行初始化步骤...
kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly
标志存储值并立即尝试读取它),聪明!谢谢。 - Petr Dvořák