在第一次和第二次发布中未在开始时找到iOS密钥链值,然后在第三次发布中恢复正常
我们有一个应用程序,需要在发布后立即获取密钥链值。我注意到,在安装后的第一次和第二次启动中,直到我们的检查完成后,才能找到钥匙链值。 密钥链可访问性设置为.accessibleAfterFirstUnlock,我已尝试观察ProtectedData通知和applicationProtectedDataWillBecomeUnavailable委托方法,两者都未调用。无法访问密钥链时收到的错误为errSecItemNotFound在第一次和第二次发布中未在开始时找到iOS密钥链值,然后在第三次发布中恢复正常,ios,swift,xcode,keychain,Ios,Swift,Xcode,Keychain,我们有一个应用程序,需要在发布后立即获取密钥链值。我注意到,在安装后的第一次和第二次启动中,直到我们的检查完成后,才能找到钥匙链值。 密钥链可访问性设置为.accessibleAfterFirstUnlock,我已尝试观察ProtectedData通知和applicationProtectedDataWillBecomeUnavailable委托方法,两者都未调用。无法访问密钥链时收到的错误为errSecItemNotFound 这在第三次发射后就停止了,一切恢复正常。自第三次启动以来,可以从一
这在第三次发射后就停止了,一切恢复正常。自第三次启动以来,可以从一开始访问密钥链值。但是第一次和第二次发布对我们的用户体验非常重要,所以我们想解决这个问题。我想知道是否有人见过类似的事情,以及如何解决。我向您提出了这个框架:您可以使用
SPM
我是这样使用它的:
import SimpleKeychain
/// A helper function to load data from the Keychain
func keyChainLoad(with key: String) -> String?
{
simpleKeychain.useAccessControl = false
simpleKeychain.defaultAccessiblity = .whenUnlockedThisDeviceOnly
return simpleKeychain.string(forKey: key)
}
func keyChainLoadData(with key: String) -> Data? {
simpleKeychain.useAccessControl = false
simpleKeychain.defaultAccessiblity = .whenUnlockedThisDeviceOnly
return simpleKeychain.data(forKey: key)
}
/// A helper function to save data from the Keychain
func keyChainSave(withValue value: String, forKey key: String)
{
simpleKeychain.useAccessControl = false
simpleKeychain.defaultAccessiblity = .whenUnlockedThisDeviceOnly
simpleKeychain.setString(value, forKey: key)
}
func keyChainSave(withData data: Data, forKey key: String)
{
simpleKeychain.useAccessControl = false
simpleKeychain.defaultAccessiblity = .whenUnlockedThisDeviceOnly
simpleKeychain.setData(data, forKey: key)
}
func keyChainDelete(forKey key: String)
{
simpleKeychain.useAccessControl = false
simpleKeychain.defaultAccessiblity = .whenUnlockedThisDeviceOnly
simpleKeychain.deleteEntry(forKey: key)
}
证明它,它从未让我失望