作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在向钥匙串(keychain)添加值时设置了 kSecAttrAccessibleWhenUnlocked
键。 documentation状态:
The data in the keychain item can be accessed only while the device is unlocked by the user.
我写了一个简单的测试应用,这里是 viewDidLoad
方法:
[[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:nil];
// Device (with passcode lock) is locked now
double delayInSeconds = 6.0;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
NSError * error = nil;
[MyKeychainWrapper setKeychainObject:@"abc"
forKey:@"key"
error:&error];
NSLog(@"Setting Error: %@", error); // No error logged
NSString * value = (NSString *) [MyKeychainWrapper keychainObjectForKey:@"key"
error:&error];
NSLog(@"value: %@", value); // Logs ABC when the device is locked
NSLog(@"Getting Error: %@", error); // No error logged
});
设备锁定时如何保存和读取数据?
最佳答案
有点不清楚你是如何测试这个的,我假设你正在运行你的代码然后按下手机上的电源按钮。按下电源按钮时钥匙串(keychain)锁定不会立即发生,因此您的应用程序将能够在按下电源按钮后的短时间内(大约 10 秒)访问钥匙串(keychain)项目。
适用于 iOS;如果您在开发人员模式下的手机上运行此代码,查看控制台,您会注意到在按下手机上的电源按钮后,钥匙串(keychain)实际锁定需要几秒钟。在我的 iPhone 5 上,它需要 10 秒,具体取决于正在运行的应用程序。解锁设备也是如此,需要一段时间才能解锁钥匙串(keychain)。这是我刚刚做的一个例子;请注意,从“Locking”到“Locked”打印输出大约需要 10 秒。
May 5 14:26:20 I50 kernel[0] <Debug>: AppleKeyStore::start_keybag_locking: Device Locking..
May 5 14:26:20 I50 kernel[0] <Debug>: ALS: AppleARMBacklight::handleMessageGated - framebufferState -> 0
May 5 14:26:30 I50 UserEventAgent[14] <Error>: LockStateNotifier aksNotificationCallback posting notification: com.apple.mobile.keybagd.lock_status
May 5 14:26:30 I50 kernel[0] <Debug>: AppleKeyStore:Sending lock change 1
May 5 14:26:30 I50 kernel[0] <Debug>: AppleKeyStore::device_state_transition: Device Locked, lockstate=1
据我所知,Apple 并未指定确切时间,但 6 秒可能不足以让钥匙串(keychain)锁定。
关于ios - 为什么在使用 kSecAttrAccessibleWhenUnlocked 时设备锁定时可以访问钥匙串(keychain)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19637614/
我是一名优秀的程序员,十分优秀!