从服务器下载.plist并将其保存在本地iPhone应用程序中

时间:2012-05-28 21:16:00

标签: iphone objective-c save plist

我想将应用内购买集成到我的应用程序中,因此我想在用户购买新级别集时下载.plist文件。如何从服务器下载文件并将其保存以便永久保留在我的iPhone应用程序中?

修改

我想实现类似的目标:

  • 由于这些plists(从不超过20个)的数量不多,我可以将它们包含到应用程序中并设置一个布尔值isPurchased左右,对吧? 如果用户购买了类别,则布尔值设置为YES。 每当我添加新的类别时,我都会有一个全新的更新,例如“Cut the rope”,例如它。这是一个好方法吗?

2 个答案:

答案 0 :(得分:1)

首先:为什么不使用Apple's服务进行应用内购买?为什么要使用自己的实现?我不确定但是......你认为你会得到Apple的批准吗?据我所知,亚马逊过去做过类似的事情,他们没有得到它。

第二:我不会为此目的使用NSData。如果您有一个有效的属性列表,那么它是使用

的最佳解决方案
NSDictionary *dict = [NSDictionary dictionaryWithContentsOfURL:[NSURL URLWithString:@"foobar.com/plistfile.plist"]];

然后您可以存储此词典。说实话,我不建议使用您的解决方案。如果我理解正确,你会在一段时间后拥有成千上万的pl ..我的建议:例如,使用“全局”可变字典作为App Delegate的ivar。这应该在开头是空的。然后如上所述下载您的助手词典并使用

填充您的全局词典
[[delegateInstance globalDictionary] addEntriesFromDictionary:dict];
每次获得新数据时

保存
[[delegateInstance globalDictionary] writeToFile:@"path" atomically:YES];

并在每次应用启动时恢复。

修改

当然你可以这样做。如果这些plist真的存储信息,那很好。例如,您可以在那里存储计费信息,以便它们不能与其他用户互换(或者至少不应该互换)。但是:如果您只想获取有关问题的信息,如果用户购买了特定级别,请考虑将您的信息合并到一个plist中(如上所述)。无论如何:考虑让用户获取数据的可能性。想想有人意外删除你的应用程序。你怎么想向他解释他的所有购买都丢失了?应用内购买更安全。

或者至少:将收据的副本存储在您的服务器上,让用户登录以收集他们过去支付的费用; - )

玩得开心,祝你好运! : - )

答案 1 :(得分:0)

快速而肮脏的单线:

[[NSData dataWithContentsOfURL:@"http://<yourfile>.plist"] writeToFile:@"pathforthefile.plist" atomically:YES];