申请被拒绝,因为没有遵循iOS数据存储指南

我们正在将数据存储到应用程序的Document目录中,并且我们拒绝了应用程序。 我们已经尝试过使用“不备份”属性来存储当前版本的数据和下面的代码。

- (BOOL)addSkipBackupAttributeToItemAtURL:(NSURL *)URL{ const char* filePath = [[URL path] fileSystemRepresentation]; const char* attrName = "com.apple.MobileBackup"; u_int8_t attrValue = 1; int result = setxattr(filePath, attrName, &attrValue, sizeof(attrValue), 0, 0); return result == 0; } 

我们根据iOS数据存储指南使用它。

在早期版本中,我们也尝试将数据存储在私人目录中。 但是,我们没能得到申请的批准。

你能不能给我们更多的描述,为什么我们不能得到批准的申请? 或者,我们还需要对数据存储进行其他更改吗? 所以,我们可以得到批准,我们已经在iTunes上的新版本的应用程序。

我想@ Jasarien的评论是正确的答案,但没有进一步的通讯,这个问题是相对较新的,所以我会扩大。

对于其他人看到拒绝,你会得到:

iOS数据存储指南指定:

  1. 只有用户生成的文档和其他数据,或者您的应用程序无法重新生成的文档和其他数据应该存储在/ Documents目录中,并且将自动由iCloud进行备份。

  2. 可以再次下载或重新生成的数据应存储在/ Library / Caches目录中。 您应该放入Caches目录中的文件示例包括数据库caching文件和可下载的内容,例如杂志,报纸和地图应用程序使用的文件。

  3. 仅临时使用的数据应存储在/ tmp目录中。 尽pipe这些文件没有备份到iCloud,但请记住在完成后删除这些文件,以便它们不会继续占用用户设备上的空间。

  4. 使用“不备份”属性来指定应保留在设备上的文件,即使在低存储情况下也是如此。 使用此属性的数据可以重新创build,但即使在低存储情况下也需要保持正常运行您的应用程序,或者因为客户希望在脱机使用期间可以使用该数据。 该属性适用于标记的文件,而不pipe它们在哪个目录中,包括Documents目录。 这些文件不会被清除,也不会被包含在用户的iCloud或iTunes备份中。 因为这些文件确实使用设备上的存储空间,所以您的应用程序负责定期监视和清除这些文件。“

例如,只有用户使用您的应用程序创build的内容(例如文档,新文件,编辑等)可以存储在/ Documents目录中 – 并由iCloud进行备份。

应用程序使用的临时文件只能存储在/ tmp目录中; 请记住当用户退出应用程序时删除存储在这个位置的文件。

可以重新创build的数据必须持续保持应用程序的正常运行,或者因为客户期望它可供离线使用,则应标记为“不备份”属性。 有关更多信息,请参阅技术问答1719:如何防止将文件备份到iCloud和iTunes?

所以我明白了为什么你会使用“不备份”,并期望遵守规则,但我认为像@Jasarien所说的 – 他们的意思是让你转移到像caching或温度更离散的目录。

实际上肯定会通过审查的是切换到核心数据和使用内部的SQLite – 但这可能是太多的工作。

所以要包装 – 关于如何保存到caching或tmp的文章 – 在iOS 5应用程序中保存文件的位置? (实际上,也许这是一个重复的那个…: – /)

GL! 俄德

– 编辑 –

另一个好post: https : //stackoverflow.com/questions/8164868/ios-data-storage-guidelines-available-since-when

– 编辑#2 –

另一个好post: iOS 5不允许将下载的数据存储在Documents目录中?

猜猜我应该只是指出了重复… 🙂

看看这个链接http://developer.apple.com/library/ios/#qa/qa1719/_index.html#//apple_ref/doc/uid/DTS40011342你使用的代码是兼容的5.0.1和不是5.1及更高版本&#x3002; 您必须使用caching<= 5.0。 但更好的解决scheme是部署5.1和更高版本,而不是5.0,因为如果你有大量的数据,很可能迟早会清除caching。 希望能帮助到你。