我的IOS应用程序被拒绝-数据存储指南(2.23)我有两个可能的嫌疑犯

我的IOS应用程序被拒绝-数据存储指南(2.23)我有两个可能的嫌疑犯,ios,objective-c,appstore-approval,Ios,Objective C,Appstore Approval,由于iCloud存储限制,我的应用被拒绝。(2.23). 对于这种情况有很多问题,但我仍然不知道为什么我的应用程序被拒绝了。。以下是我的疑犯: 1-我的应用程序下载pdf文件和图像,以便用户在“脱机”模式下从tableview中选择行时查看。我已将我的下载文件夹设置为“Documents/privateDownloads”,并将文件夹(以及其中的文件)url标志设置为“do not backup” 2-我的应用程序也有2Mb。“preload.json”文件,我的应用程序在第一次启动时读取该文

由于iCloud存储限制,我的应用被拒绝。(2.23). 对于这种情况有很多问题,但我仍然不知道为什么我的应用程序被拒绝了。。以下是我的疑犯:

1-我的应用程序下载pdf文件和图像,以便用户在“脱机”模式下从tableview中选择行时查看。我已将我的下载文件夹设置为“Documents/privateDownloads”,并将文件夹(以及其中的文件)url标志设置为“do not backup”

2-我的应用程序也有2Mb。“preload.json”文件,我的应用程序在第一次启动时读取该文件,并仅在第一次启动时将其预加载到数据库中(带有一个进度hud,显示导入数据的进度)。我没有将“preload.json”文件设置为“不备份”。我只是将该文件拖放到Xcode中的“Supporting Files”组中

我猜问题出在第二个嫌疑犯身上,但我也读到应该将“privateDownloads”文件夹移到“Application Support”文件夹而不是Documents文件夹中

我总是将脱机文件存储在nsurl缓存上很长一段时间(技术上永远),但这次我决定这样做

谢谢你的阅读和帮助

编辑:app store中有一条关于拒绝原因的说明:

“特别是,我们发现在发布和/或内容下载时 应用商店3.6MB“


当我控制这个问题时,这是在我的应用程序“预加载”数据之后发生的。但我真正不明白的是,我将这些预加载的数据存储在核心数据中。所以是的,我想在iCloud中备份这些数据

这个问题与preload.json文件没有任何关系。如果这包含在你的应用程序分发中,它就是应用程序的一部分,你不需要对它做任何不同的事情


我怀疑审阅者没有注意到您在添加到Documents/privateDownloads文件夹的文件上设置了“do not backup”标志,或者您有一个bug,并且根本没有设置该标志。如果能够,将这些类型的文件存储在/Library/Caches子目录中会更安全。然后,您就不必担心标记。

要解决种子数据太大的问题,您可以将核心数据堆栈拆分为两个单独的存储—一个存储用户数据并备份到iCloud。第二个存储从JSON导入的种子数据。然后,可以通过“不备份”标志将此存储从iCloud备份中排除


另一种推荐的方式是运送预填充的商店,如中所述。由于您提到preload.json的大小为几MB,因此在应用程序初始启动时,比在每台设备上预生成一次应用商店更可取。您可以应用所需的文件属性,以便不更轻松地进行备份。

调试的最佳方法是转到“设置”应用程序,检查您的应用程序为iCloud占用的存储空间,如果每次下载pdf->它都在增加,那么这就是问题所在。如果它没有增加解决第二个怀疑谢谢,我正在考虑如何测试它。我已经测试过了,但它似乎没有增加…:/我还请求苹果公司提供技术支持…@Kabira我已经提供了关于这个问题的新信息,你能再检查一下吗..你想要数据同步吗?基本上你知道如何解决它。如果你不想解决。。向审查小组写一封呼吁信,说明为什么数据应该同步。我已经测试了通过运行“xattr”命令将属性添加到文件中,我得到了“com.apple.metadata:com_apple_backup_excludeItem”。但我想我会把所有这些文件移到缓存目录中只是为了确定。我已经添加了更多关于这个问题的信息。我开始考虑预加载是主要问题。。你能检查我对我的问题的编辑吗?嗯,如果你预加载的数据从未改变,那么@Matthias使用两个存储区的想法是一个好主意。如果这只是用户的初始起点,并且数据发生了变化(用户内容发生了变化,而不仅仅是从服务器上下载了更多的内容或其他内容),那么您可能希望坚持您正在做的事情,并就拒绝问题向审查委员会提出上诉。解释为什么需要备份数据等,如果数据丢失就不能重新创建。你可以尝试重新提交,顺便说一句-我从未见过他们在备份限制方面如此咄咄逼人。@Mathias很遗憾,这是我的应用程序第二次被拒绝。我已将我的应用程序更改为为为下载的项目设置“请勿备份”并重新提交,但我发现情况并非如此,我将尝试按照文章所述预加载数据。。看起来他们开始超越备份限制了:/lookh好像我已经通过捆绑一个预加载的sqlite文件并将该文件复制到application support/db文件夹中解决了这个问题。因为我将sqlite文件设计为可重新生成的,所以我还将DoNotBackup属性添加到db文件夹中。