从In App Purchase中存储/加载PNG

时间:2015-02-12 16:48:07

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

我正在为我的应用开发IAP。我可以创建IAP包,上传到iTunes Connect并从App Store沙箱下载到我的应用程序,并阅读内容。我仍然不清楚的是,在哪里复制IAP的内容以最有效地存储/加载它们。

IAP包的内容是一组PNG,用户可以使用它在使用应用程序时自定义其外观。用户使用应用程序本身获取一组默认的PNG。

这导致了几个问题:

  1. 从IAP存储PNG的首选位置在哪里?一些教程建议 NSDocumentDirectory ,而其他人则建议使用 NSApplicationSupportDirectory 。一个人比另一个人有什么好处?

  2. 如何加载PNG而不必跟踪主束中的哪些以及哪些属于IAP目录?例如,主应用程序包中的默认PNG可以加载:

    UIImage *newHat = [UIImage imageNamed:@"fancyHat.png"];
    

    虽然必须像这样加载来自IAP的PNG(假设我已将它们复制到Document目录中):

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *inAppImagePath = [documentsDirectory stringByAppendingPathComponent:@"iapTopHat.png"];
    UIImage *newHat = [UIImage imageWithContentsOfFile:inAppImagePath]; 
    

    是否可以协调这些,所以我不必跟踪哪些PNG是IAP,哪些是在主捆绑中,然后使用两种不同的方法来加载它们?

  3. 理想情况下,我可以将PNG复制到主应用程序包中,以便我可以使用UIImage imageNamed:。但这似乎是不允许的,也不是首选。

    非常感谢任何帮助或指导。

1 个答案:

答案 0 :(得分:1)

  1. 以下是Apple建议数据存储位置的良好开端:https://developer.apple.com/icloud/documentation/data-storage/index.html

  2. 您可以通过多种方式深入了解已捆绑与已购买的内容。在您的示例中,您的图像名称以可用于区分内容类别的内容为前缀,因此您可以使用它来确定要使用的加载机制。您可以反转您在帖子中考虑的方法,即首先检查捆绑中是否存在资产(无论名称),然后从那里加载,或者如果找不到,则从所购买的位置加载。如果你想在磁盘上统一这些集合,你也可以在捆绑中创建符号链接,但是这个很棘手,因为你需要确保你的符号链接在基础应用程序UUID发生变化时会更新(它会经常发生)在开发过程中。