我的应用程序中有一些用Apple托管的IAP。 IAP主要是图像。
为了跟踪用户是否购买了我的东西,我使用KeyChain存储了一系列购买的IAP。
如果用户删除了该应用。从Apple服务器下载的内容将被删除,但钥匙串中的数组将保持不变。当用户重新安装应用程序并单击未锁定的IAP时,他们将看到一个空白的imageViews。
以下是我所知道的:
NSUserDefaults
中,我可以在重新安装应用程序时重置数组。但是NSUserDefaults
是不安全的,我不想使用它。我想安全地存储一系列购买的IAP,这些IAP会在删除应用时被删除。
我该怎么做?还有其他东西像KeyChain一样安全但在删除应用时会被删除吗?
非常感谢任何帮助。
答案 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