iOS - 还有其他类似KeyChain的安全内容,但在删除应用时会被删除吗?

时间:2016-02-17 16:15:55

标签: ios objective-c in-app-purchase nsuserdefaults keychain

我的应用程序中有一些用Apple托管的IAP。 IAP主要是图像。

为了跟踪用户是否购买了我的东西,我使用KeyChain存储了一系列购买的IAP。

如果用户删除了该应用。从Apple服务器下载的内容将被删除,但钥匙串中的数组将保持不变。当用户重新安装应用程序并单击未锁定的IAP时,他们将看到一个空白的imageViews。

以下是我所知道的:

  • 我不知道应用是否会被删除。
  • 删除应用时,我无法重置钥匙串。
  • 我知道如果我将IAP数组存储在NSUserDefaults中,我可以在重新安装应用程序时重置数组。但是NSUserDefaults是不安全的,我不想使用它。

我想安全地存储一系列购买的IAP,这些IAP会在删除应用时被删除。

我该怎么做?还有其他东西像KeyChain一样安全但在删除应用时会被删除吗?

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

也许这不是最优雅的方式,但这是我能想到的。 在select FirstName, LastName, sum(total) as total_sum from Customer AS A, Sale AS E where A.CustomerID=E.CustomerID GROUP BY FirstName, LastName NSUserDefaults中保留一个标记,并在首次启动应用时执行迁移任务:例如,如果是isFirstLaunch,则删除Keychain中的所有IAP。

迁移总是令人痛苦,但希望可能有所帮助。

答案 1 :(得分:0)

然而,您可以使用NSKeyedArchiver对对象进行编码,然后将其存储在NSUserDefaults中。

存档: 迅速

let data = NSKeyedArchiver.archivedDataWithRootObject(yourObject)
NSUserDefaults.standardUserDefaults().setObject(data, forKey: "yourKey")

ObjC

NSData *data = [NSKeyedArchiver archivedDataWithRootObject:yourObject];
[[NSUserDefaults standardUserDefaults] setObject:data forKey:@"yourKey"];

<强>取消归档: 迅速

NSData *data = [[NSUserDefaults standardUserDefaults] objectForKey:@"yourKey"];
NSArray *array = [NSKeyedUnarchiver unarchiveObjectWithData:data];

ObjC

NSData *data = [[NSUserDefaults standardUserDefaults] objectForKey:@"yourKey"];
NSArray *array = [NSKeyedUnarchiver unarchiveObjectWithData:data];

请参阅here