申请被拒绝,因为没有遵循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数据存储指南指定:
只有用户生成的文档和其他数据,或者您的应用程序无法重新生成的文档和其他数据应该存储在/ Documents目录中,并且将自动由iCloud进行备份。
可以再次下载或重新生成的数据应存储在/ Library / Caches目录中。 您应该放入Caches目录中的文件示例包括数据库caching文件和可下载的内容,例如杂志,报纸和地图应用程序使用的文件。
仅临时使用的数据应存储在/ tmp目录中。 尽pipe这些文件没有备份到iCloud,但请记住在完成后删除这些文件,以便它们不会继续占用用户设备上的空间。
使用“不备份”属性来指定应保留在设备上的文件,即使在低存储情况下也是如此。 使用此属性的数据可以重新创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及更高版本。 您必须使用caching<= 5.0。 但更好的解决scheme是部署5.1和更高版本,而不是5.0,因为如果你有大量的数据,很可能迟早会清除caching。 希望能帮助到你。