【问题标题】:Which technique will be better to store IOS app data and run app in offline mode??Documents directory or cache directory or temprary directory?哪种技术更好地存储IOS应用程序数据并在离线模式下运行应用程序?文档目录或缓存目录或临时目录?
【发布时间】:2013-03-04 23:55:39
【问题描述】:

您好,最近我的应用被 APPLE 拒绝了,他们说

我们发现您的应用未遵循 App Store 审核指南所要求的 iOS 数据存储指南。 特别是,我们发现在启动和/或内容下载时,您的应用程序存储 3.11 MB。要检查您的应用存储了多少数据:
- 安装并启动您的应用
- 转到设置 > iCloud > 存储和备份 > 管理存储
- 如有必要,点击“显示所有应用”
- 检查您应用的存储空间
iOS 数据存储指南指出,只有用户使用您的应用创建的内容,例如文档、新文件、编辑内容等,才应由 iCloud 备份。
您的应用程序使用的临时文件应该只存储在 /tmp 目录中;请记住在用户退出应用程序时删除存储在此位置的文件。
可以重新创建但必须保留以使您的应用程序正常运行的数据 - 或者因为客户希望它可以离线使用 - 应该使用“不备份”属性进行标记。对于 NSURL 对象,添加 NSURLIsExcludedFromBackupKey 属性以防止相应文件被备份。对于 CFURLRef 对象,使用相应的 kCFURLIsExcludedFromBackupKey 属性。
如需更多信息,请参阅技术问答 1719:如何防止文件备份到 iCloud 和 iTunes?。
有必要修改您的应用程序以满足 iOS 数据存储指南的要求。 对于离散代码级别的问题,您可能希望咨询 Apple 开发人员技术支持。请务必:
- 包括您的拒绝问题的完整详细信息
- 准备任何符号化的崩溃日志、屏幕截图和步骤,以便在 DTS 工程师跟进时重现问题。
有关如何符号化和读取崩溃日志的信息,请参阅技术说明 TN2151 理解和分析 iPhone OS 应用程序崩溃报告。
如果您在重现此问题时遇到困难,请尝试按照https://developer.apple.com/library/ios/qa/qa1764/TestingWorkflow 中所述使用 Xcode 的存档功能测试工作流。

我现在该怎么办?需要帮助

【问题讨论】:

  • 您可以将数据存储在缓存目录中,即使删除也可以复制。存储在 Cache 目录中的数据不会被 iCloud 备份。出于同样的原因,我们之前也经历过拒绝。我们所做的只是将所有数据移动到缓存目录。
  • 以及缓存目录保存数据多久??
  • NSCachesDirectory 可以在内存不足的情况下被删除。如果您不想在内存不足的情况下删除文件,请将其保存在文档目录下,并且不要忘记使用“不备份”属性。

标签: ios objective-c


【解决方案1】:

我也遇到了同样的问题。要解决此问题,您应该执行一些代码,以便您的 DocumentDirectory 不应该与 iCould 同步。为此,您必须为 DocumentDirectory 设置一个平面,称为 Don't BackUp

要实现这一点,请使用code provided by the Apple.

想了解更多可以参考this

希望这会对你有所帮助。

一切顺利!!!

【讨论】:

  • 如果我将数据存储在缓存目录中怎么办?然后它还会备份到 iCloud 吗??
  • 是的,你可以。但最好的方法是将您的 DocumentDirectory 标记为不备份
  • 如果您存储在缓存中,则不会备份到 iCloud。但是,您必须管理缓存被清除的可能性。
【解决方案2】:

基本上,Apple 告诉您只有用户明确创建并想要保存的文档才应该存储在 iCloud 中。

否则,您可以将您的应用创建的文件保存到“文档”目录(如果您希望它在两次启动之间保持不变)或临时文件夹(如果您不关心正在供电的设备之间的文件会发生什么情况上下)。

关于 Yashesh 的回答(给他 +1!),请确保 iCloud 已关闭,方法是转到目标(应用程序)设置并将“iCloud”复选框设为关闭 em>,像这样:

【讨论】:

  • 目前我正在将所有数据保存在缓存目录中,考虑到苹果的上述拒绝,这是一种安全的技术吗??
  • 那么你在 iCloud 目录中保存了什么?缓存文件?
  • 我还没有集成 iCloud,我正在做的是,我将所有图像保存到应用程序文档目录和一些 plist 文件中,这样当互联网不可用时我可以从文档目录中检索旧数据,现在我正在接近缓存目录,所以我应该这样做还是更好的方法是集成 iCloud?我从来没有这样做过
  • 你是说如果没有开启iCloud授权,那么在Documents中放置的文件就不需要使用don't back up标志了吗?
猜你喜欢
  • 1970-01-01
  • 2017-04-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-18
  • 1970-01-01
  • 2015-10-23
相关资源
最近更新 更多