我在kSecAttrAccessibleWhenUnlocked
向钥匙串添加值时设置钥匙。该文档指出:
只有当用户解锁设备时,才能访问钥匙串项中的数据。
我写了一个简单的测试应用程序,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
});
设备锁定时如何保存和读取数据?