我想知道当用户在iOS 7上没有打开iCloud Keychain支持(iOS默认?)时会发生什么,然后运行以下代码,然后启用iCloud Keychain支持。
KeychainItemWrapper* keychain = [[KeychainItemWrapper alloc] initWithIdentifier:@"com.joseandro.UUID" accessGroup:nil];
CFUUIDRef theUUID = CFUUIDCreate(NULL);
CFStringRef string = CFUUIDCreateString(NULL, theUUID);
CFRelease(theUUID);
NSString* UUID = [(NSString *)string autorelease];
[keychain setObject:@"UNIQUE_IDS_SERVICE" forKey:kSecAttrService];
[keychain setObject:@"DeviceUUID" forKey:kSecAttrAccount];
[keychain setObject:UUID forKey:kSecValueData];
[keychain setObject:kSecAttrAccessibleAlwaysThisDeviceOnly forKey:kSecAttrAccessible];
[keychain release];
keychain = nil;
将使用先前存储的“DeviceUUID”值数据,或者完全删除Keychain,因此返回的值将为空(使用以下代码)并且在所有发生之前我将丢失所存储的内容?
KeychainItemWrapper* keychain = [[KeychainItemWrapper alloc] initWithIdentifier:@"com.joseandro.UUID" accessGroup:nil];
NSString* UUID = [keychain objectForKey:(kSecValueData)];
return UUID;
答案 0 :(得分:0)
启用iCloud Keychain支持后无关紧要,一旦存储密钥,密钥将始终存在。
我无法验证iCloud尚未激活且操作系统被删除并重新安装时的行为。