2012-03-23 110 views
2

与许多开发人员一样,我的iOS应用刚刚被拒绝,因为有可下载内容被备份到iCloud。我已经为这个问题寻找了明确的答案,但一直没能找到答案。iOS文件存储:未备份的解决方案

苹果公司说,你应该实现一个“不备份”属性的文件,但是,他们也状态(https://developer.apple.com/library/ios/#qa/qa1719/_index.html):

新的“不备份”属性将只安装iOS 5.0中使用.1或更高版本。在iOS 5.0及更早版本中,应用程序需要将其数据存储在/ Library/Caches中以避免其备份。由于此属性在旧系统上被忽略,因此您需要确保您的应用符合您的应用支持的所有iOS版本的iOS数据存储指南。

我的应用支持iOS 4.0及更高版本。这是否意味着如果我想维持对iOS 4.0-5.0的支持,我别无选择,只能将所有内容放入Caches文件夹中?或者,我可以添加“不备份”属性并将文件保存在/ Documents中吗?如果我必须将内容保留在Caches文件夹中,是否可以防止在低存储情况下清除这些文件?最后,是否有开发人员将文件放在Caches文件夹中,并知道它们被清除的频率?

任何意见或帮助将不胜感激。非常感谢!

+0

我添加了不备份标志,但最终使得整个文档文件夹不会被备份。这仍然是可接受的用户不生成任何其他文件? – user1287635 2012-03-23 17:47:27

+2

我的回答是好的? – 2012-04-27 13:00:50

回答

0

我认为你可以找到这样类似的问题:

What is suitable location for creating sqlite file?

,并按照我的想法,最好是存放在新的目录,而不是文件目录库文件..

+0

缓存目录一直被删除...如果要永久存储文件而不将其移动到iCloud中,则必须将其保存在文档中并将其标记为不备份。不可能。这是最好的做法https://developer.apple.com/library/ios/#qa/qa1719/_index.html – 2012-03-23 06:55:09

+0

如果我支持iOS的早期版本,我的应用程序仍会被批准吗?或者我应该将最低限度提高到5.0 0.1? – user1287635 2012-03-23 06:56:53

0

无说的不对。我用这种方式解决了同样的问题。我将我的数据库和目录映像保存在Documents/.. flagsons目录中,因为不像Apple建议的那样进行备份。这样,对于更新到5.x或更高的设备,文件不会备份到iCloud;对于其他人而言,由于不支持iCloud,所以没有变化。

这是一个最佳实践,因为不涉及用户的文件我们不在iCloud中进行备份。您不想重新下载的所有其他文件必须保存在文档中,将其标记为不备份。如果将其保存在Caches文件夹中,那么当您关闭应用程序时,这些文件会在短时间内被删除,并且在您再次打开时必须重新登陆。

+0

iOS 5.0.0支持iCloud,那么如果我支持早期版本,应用程序仍然会被批准吗? – user1287635 2012-03-23 06:58:29

+1

当然,我支持4.0和你一样。 – 2012-03-23 07:00:25

+1

对于iOS版本,请不要更改任何内容,因为这些文件不是iCloud中的存储空间,您可以提供支持。 – 2012-03-23 07:02:32

1

关注区域是iOS 5.0,它支持iCloud,但不识别“不备份”属性。在这种情况下,文档目录中的应用程序的所有数据都可能会备份到iCloud。对于低于5.x的iOS版本:

  • iCloud备份无效。
  • “不备份”标志不相关。编译期间不会产生任何警告。

因此,可以将数据保存在文档目录中,对于所有版本,将“不备份”标志适当地添加到内容(文件/文件夹)中。问题仅限于5.0版本。