iOS - 是否有其他像 KeyChain 一样安全但在删除应用程序时被删除的东西?
iOS - Is there something else that is secure like KeyChain but gets deleted when app is deleted?
我的应用程序中有一些由 Apple 托管的 IAP。 IAP主要是图片。
为了跟踪用户是否购买了我的东西,我使用 KeyChain 来存储购买的 IAP 数组。
如果用户删除了应用。从 Apple 服务器下载的内容将被删除,但 keychain 中的数组将保持不变。当用户重新安装应用程序并点击解锁的 IAP 时,他们将看到一个空白的 imageViews。
这是我所知道的:
- 我不知道应用程序是否被删除。
- 当应用程序被删除时,我无法重置钥匙串。
- 我知道如果我将 IAP 数组存储在
NSUserDefaults
中,我可以在重新安装应用程序时重置数组。但是 NSUserDefaults
不安全,我不想使用它。
我想安全地存储一系列已购买的 IAP,这些 IAP 在应用被删除时也会被删除。
我该怎么做?是否有其他像 KeyChain 一样安全但在删除应用程序时被删除的东西?
非常感谢任何帮助。
也许这不是最优雅的方法,但我能想到的就是这些。
在 NSUserDefaults
中保留一个标志,例如 isFirstLaunch
,并在您的应用首次启动时执行迁移任务:例如,如果是 FirstLaunch,则删除钥匙串中的所有 IAP。
迁移总是痛苦的,但希望能有所帮助。
但是您可以使用 NSKeyedArchiver
对您的对象进行编码,然后将它们存储在您的 NSUserDefaults
中。
存档:
Swift
let data = NSKeyedArchiver.archivedDataWithRootObject(yourObject)
NSUserDefaults.standardUserDefaults().setObject(data, forKey: "yourKey")
ObjC
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:yourObject];
[[NSUserDefaults standardUserDefaults] setObject:data forKey:@"yourKey"];
取消归档:
Swift
NSData *data = [[NSUserDefaults standardUserDefaults] objectForKey:@"yourKey"];
NSArray *array = [NSKeyedUnarchiver unarchiveObjectWithData:data];
ObjC
NSData *data = [[NSUserDefaults standardUserDefaults] objectForKey:@"yourKey"];
NSArray *array = [NSKeyedUnarchiver unarchiveObjectWithData:data];
见here
我的应用程序中有一些由 Apple 托管的 IAP。 IAP主要是图片。
为了跟踪用户是否购买了我的东西,我使用 KeyChain 来存储购买的 IAP 数组。
如果用户删除了应用。从 Apple 服务器下载的内容将被删除,但 keychain 中的数组将保持不变。当用户重新安装应用程序并点击解锁的 IAP 时,他们将看到一个空白的 imageViews。
这是我所知道的:
- 我不知道应用程序是否被删除。
- 当应用程序被删除时,我无法重置钥匙串。
- 我知道如果我将 IAP 数组存储在
NSUserDefaults
中,我可以在重新安装应用程序时重置数组。但是NSUserDefaults
不安全,我不想使用它。
我想安全地存储一系列已购买的 IAP,这些 IAP 在应用被删除时也会被删除。
我该怎么做?是否有其他像 KeyChain 一样安全但在删除应用程序时被删除的东西?
非常感谢任何帮助。
也许这不是最优雅的方法,但我能想到的就是这些。
在 NSUserDefaults
中保留一个标志,例如 isFirstLaunch
,并在您的应用首次启动时执行迁移任务:例如,如果是 FirstLaunch,则删除钥匙串中的所有 IAP。
迁移总是痛苦的,但希望能有所帮助。
但是您可以使用 NSKeyedArchiver
对您的对象进行编码,然后将它们存储在您的 NSUserDefaults
中。
存档: Swift
let data = NSKeyedArchiver.archivedDataWithRootObject(yourObject)
NSUserDefaults.standardUserDefaults().setObject(data, forKey: "yourKey")
ObjC
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:yourObject];
[[NSUserDefaults standardUserDefaults] setObject:data forKey:@"yourKey"];
取消归档: Swift
NSData *data = [[NSUserDefaults standardUserDefaults] objectForKey:@"yourKey"];
NSArray *array = [NSKeyedUnarchiver unarchiveObjectWithData:data];
ObjC
NSData *data = [[NSUserDefaults standardUserDefaults] objectForKey:@"yourKey"];
NSArray *array = [NSKeyedUnarchiver unarchiveObjectWithData:data];
见here