我正在为我的应用开发IAP。我可以创建IAP包,上传到iTunes Connect并从App Store沙箱下载到我的应用程序,并阅读内容。我仍然不清楚的是,在哪里复制IAP的内容以最有效地存储/加载它们。
IAP包的内容是一组PNG,用户可以使用它在使用应用程序时自定义其外观。用户使用应用程序本身获取一组默认的PNG。
这导致了几个问题:
从IAP存储PNG的首选位置在哪里?一些教程建议 NSDocumentDirectory ,而其他人则建议使用 NSApplicationSupportDirectory 。一个人比另一个人有什么好处?
如何加载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,哪些是在主捆绑中,然后使用两种不同的方法来加载它们?
理想情况下,我可以将PNG复制到主应用程序包中,以便我可以使用UIImage imageNamed:
。但这似乎是不允许的,也不是首选。
非常感谢任何帮助或指导。
答案 0 :(得分:1)
以下是Apple建议数据存储位置的良好开端:https://developer.apple.com/icloud/documentation/data-storage/index.html
您可以通过多种方式深入了解已捆绑与已购买的内容。在您的示例中,您的图像名称以可用于区分内容类别的内容为前缀,因此您可以使用它来确定要使用的加载机制。您可以反转您在帖子中考虑的方法,即首先检查捆绑中是否存在资产(无论名称),然后从那里加载,或者如果找不到,则从所购买的位置加载。如果你想在磁盘上统一这些集合,你也可以在捆绑中创建符号链接,但是这个很棘手,因为你需要确保你的符号链接在基础应用程序UUID发生变化时会更新(它会经常发生)在开发过程中。