在哪里存储可下载的应用内购买?

我的应用程序可下载应用内购买。 当下载内容时,我现在将其存储在文档目录中。 但我知道Apple是挑剔的,可能会拒绝我的应用程序,因为可以恢复的内容不应存储在文档目录中,这意味着,将保存到icloud。

我想过使用临时或缓存目录,但是当iOS需要空间时,这些目录都可以清空。

我应该在哪里保存?

Documents目录只能用于无法下载的用户生成的数据(包括包含用户可选设置等的潜在数据库),所以你是对的,如果你在那里存储可下载的内容,你可能会被拒绝。

我这样做的方法是将下载的数据存储在Cache (正如你所说,当空间不足时可以随时清除),并在Documents中存储一小段数据,表明内容应该Cache 。 当Documents说数据应该存在而不存在时,我会通知用户由于空间问题,iOS已自动删除了内容,并让用户再次下载。

这样,如果用户暂时不使用该内容,他可以将其设备上的空间重用于其他内容,并且仍然可以随意再次下载该内容。 就像我想要一个应用程序,如果我是用户:)

编辑:你可以把它们放在Library如果你需要它们永远是持久的,但记住将它们标记为没有备份到iCloud,否则你很可能得到相同的拒绝。

我还读取了文档文件夹是针对用户生成的内容,并且建议使用缓存文件夹,尽管您的数据可以在需要时删除。 我还读到,在定位ios 5.1及更高版本时,可以选择使用带有无备份标志的文档文件夹。

请参阅iOS 5.0.1:如何validation该文件夹是否已标记为“不备份”iCloud?

将“不备份”属性添加到iOS 5.0.1中的文件夹层次结构中

这里的文档https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/StoreKitGuide/Chapters/DeliverProduct.html#//apple_ref/doc/uid/TP40008267-CH5-SW5

如果要保留内容,则表示Documents文件夹是移动内容的位置。

在iOS中,您的应用可以管理下载的文件。 这些文件由Caches目录中的Store Kit框架保存,备份标志未设置。 下载完成后,您的应用程序负责将其移至适当的位置。 对于在设备磁盘空间不足(以及稍后由应用程序重新下载)时可以删除的内容,请将文件保留在Caches目录中。 否则,将文件移动到Documents文件夹并设置标志以将其从用户备份中排除。