iOS Key Chain替代方案,无法在其他设备上恢复

Sta*_*als 1 storage objective-c keychain ios

是否可以在iOS上存储一些在删除应用程序时不会删除的信息(如Keychain),也无法恢复到其他设备?

据我了解 - 如果您选择加密备份选项,Key Chain将恢复到另一台设备. 将应用程序还原到新设备时,iOS钥匙串存储是否仍然存在?

因此,以某种方式可以保留一些数据 - 删除应用程序后(重新安装后读取它),并且只有在添加/创建它的设备上才可以使用它.

idm*_*ean 5

有这些选项:

kSecAttrAccessibleAlwaysThisDeviceOnly
kSecAttrAccessibleWhenUnlockedThisDeviceOnly
kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly
Run Code Online (Sandbox Code Playgroud)

来自文档:

[...]具有此属性的项目不会迁移到新设备.[...]

我认为它们正是你所需要的.他们在WWDC演讲中得到了很好的解释:

https://developer.apple.com/videos/wwdc/2014/#711

以上讲话的示例用法:

SecAccessControlRef sacObject =
SecAccessControlCreateWithFlags(kCFAllocatorDefault,
   kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly,
   kSecAccessControlUserPresence, &error);

NSData* secret = [@"top secret" dataWithEncoding:NSUTF8StringEncoding];
NSDictionary *query = @{
   (id)kSecClass: (id)kSecClassGenericPassword,
   (id)kSecAttrService: @"myservice",
   (id)kSecAttrAccount: @"account name here",
   (id)kSecValueData: secret};

OSStatus status =  SecItemAdd((CFDictionaryRef)query, nil);
Run Code Online (Sandbox Code Playgroud)

另请参阅:https://developer.apple.com/library/ios/documentation/Security/Reference/keychainservices/index.html#//apple_ref/doc/constant_group/Keychain_Item_Accessibility_Constants