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



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

编辑

我想实现这样的事情:

  • 由于这些 plist 并不多(永远不会超过 20 个),我可以将它们包含在应用程序中并设置一个布尔值,大约 isPurchased,对吧?如果用户购买了类别,则布尔值设置为 YES 。每当我添加新类别时,我都会有一个全新的更新,例如"割绳"。这是一个好方法吗?

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

第二:我不会为此目的使用 NSData。如果您有有效的属性列表,那么它是最好的解决方案

NSDictionary *dict = [NSDictionary dictionaryWithContentsOfURL:[NSURL URLWithString:@"foobar.com/plistfile.plist"]];

然后,您可以存储此字典。老实说,我不建议使用您的解决方案。如果我理解正确,一段时间后你会有成千上万的plist。我的建议:例如,使用"全局"可变字典作为应用程序委托的 ivar。这在开始时应该是空的。然后如上所述下载您的帮助程序词典,并使用

[[delegateInstance globalDictionary] addEntriesFromDictionary:dict];

每次获取新数据时。

保存方式

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

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

编辑:

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

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

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

快速而肮脏的单行:

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

最新更新