【问题标题】:NSUserDefaults causes app rejectNSUserDefaults 导致应用拒绝
【发布时间】:2012-06-24 10:56:40
【问题描述】:

由于违反指南,Apple 测试人员已拒绝我们的应用:

[2.23 应用程序必须遵循 iOS 数据存储指南,否则将被拒绝]

由于我们存储的数据库文件没有 NSURLIsExcludedFromBackupKey 标志 - 它已备份在 iCloud 中 - 并导致拒绝。

因此,我们在文件中添加了NSURLIsExcludedFromBackupKey 标志,它减少了存储在 iCloud 中的数据量。

但是 - 我们意识到 NSUserDefaults 也会占用 iCloud 中的一些空间。 我们正在使用[NSUserDefaults standardUserDefaults],但我们无法控制它。

如果我们转到 device->settings->iCloud->StorageBackUP->Manage Storage,我们可以看到我们的应用仍然在 iCloud 中占用了 0.5 kb 的数据,因为使用了 NSUserDefaults。 (删除代码中 NSUserDefaults 的使用会将其减少为 0 - 无数据)

Apple 会再次拒绝我们的应用,因为 NSUserDefaults 会在 iCloud 中获取数据吗?

【问题讨论】:

  • 不,预计应用程序将使用NSUserDefaults,您的其他文件占用了多少空间以及它们存储在哪里?
  • 应用使用了 2.4 MB 的空间。现在它需要 0.4kb 到 0.8kb 之间。
  • 我现在可以在代码中看到一条警告:警告:复制捆绑资源构建阶段包含此目标的 Donno-Info.plist 文件“Donno-Info.plist”。我看到它从包中复制了 plist。我们已经通过这种方式将应用程序发送给 Apple,您认为他们会因此拒绝该应用程序吗? (它可能会使 NSUserDefaults 空间量翻倍)..
  • 在将我们的应用程序发送到 Apple 审核后,我们意识到代码中有以下警告:“警告:复制捆绑资源构建阶段包含此目标的 Donno-Info.plist 文件... " 因为它实际上可能会使 plist 文件翻倍,苹果会因为在 iCloud 中使用不必要的空间而拒绝该应用程序吗? (我们第一次因为没有 DO_NOT_BACKUP 标志存储我们的数据库文件而被拒绝)谢谢。
  • 您的主 plist 文件不应位于副本包资源中。

标签: ios objective-c app-store appstore-approval


【解决方案1】:

您可以在您的应用程序中使用 NSUserDefaults 中的任意数量的数据,并且您不会被拒绝。我不确定它的最大数据是多少,但我不记得 Apple 指定了限制。但是,iCloud 默认设置是有限制的。您可以将您的 NSUserDefaults 备份到 iCloud,但保存在那里的数据有 1Mb 的严格限制。因此,请注意保存在那里的数据有多大。

【讨论】:

  • 但是 NSUserDefaults 也不适用于任意数据存储。它仅用于偏好和设置。
猜你喜欢
  • 2013-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-05
  • 1970-01-01
  • 2017-06-25
  • 2021-05-05
  • 2013-05-02
相关资源
最近更新 更多