【发布时间】:2012-05-05 22:50:24
【问题描述】:
我有一个带有预填充 .sqlite 文件的应用程序,该文件在首次打开应用程序时被复制到用户的 Documents 目录中。该文件为 12.9MB。自从将目标更改为 iOS5 后,我的应用已两次被拒绝,并附有此拒绝说明:
2012 年 4 月 24 日上午 10:12 拒绝二进制文件
拒绝原因:
2.23 应用程序必须遵循 iOS 数据存储指南,否则将被拒绝
2012 年 4 月 24 日上午 10:12。来自苹果。
2.23
我们发现您的应用未遵循 App Store 审核指南所要求的 iOS 数据存储指南。
特别是,我们发现在内容下载时,您的应用存储了 12.81 MB。要检查您的应用存储了多少数据:
- 安装并启动您的应用
- 转到设置 > iCloud > 存储和备份 > 管理存储
- 如有必要,点按“显示所有应用”
- 检查应用的存储空间
iOS 数据存储指南指出,只有用户使用您的应用创建的内容(例如文档、新文件、编辑等)可以存储在 /Documents 目录中 - 并由 iCloud 备份。
您的应用程序使用的临时文件应仅存储在 /tmp 目录中;请记住在用户退出应用时删除存储在此位置的文件。
可以重新创建但必须保留以使您的应用正常运行的数据 - 或者因为客户希望它可以离线使用 - 应使用“不备份”属性进行标记。对于 NSURL 对象,添加 NSURLIsExcludedFromBackupKey 属性以防止相应文件被备份。对于 CFURLRef 对象,使用相应的 kCFURLIsExcludedFromBackupKey 属性。
如需更多信息,请参阅技术问答 1719:如何防止文件备份到 iCloud 和 iTunes?。
有必要修改您的应用以满足 iOS 数据存储指南的要求。
我已尝试按照数据存储指南中的建议设置“不备份”属性,但再次被拒绝。
我没有在我的应用程序中使用 iCloud,设置 > iCloud > 等显示根本没有使用。
我无法使用Caches 或tmp 目录,因为数据库在创建后被用户修改。
Apple 根本不允许这种应用程序运行,我似乎处于两难境地。
有没有人遇到过这个问题并设法克服它?
编辑 17-5-12 我还没有设法让这个应用程序获得批准。有没有人设法做到这一点?
编辑 1-7-12 由于同样的原因,我的应用程序刚刚再次被拒绝。我不知道在这里做什么,因为它肯定是一个常见的使用场景。
编辑 11-9-12 应用程序现已获得批准 - 请在下面查看我的解决方案。我希望它可以帮助别人。
【问题讨论】:
-
我也面临这个问题。我担心你又被拒绝了。您是否尝试在整个文件夹上设置属性?我担心苹果只是拒绝不是核心数据的数据模型。如果您有更多信息,请发布您的发现。
-
我为此被拒绝了 3 次。我没有尝试将属性设置为整个文档文件夹,因为它不应该有所作为。您的应用是否因此被拒绝?
-
是的。您是否考虑过将数据库文件保存到 /Library?也许只是因为它位于 /Documents 文件夹中,而这仅适用于用户生成的内容。应该可以编写自己的 /Database 文件夹。
-
@LeeProbert 我是否可以将 /Library 文件夹用于用户生成的内容?问题是一个文件是两者的混合。
-
我注意到适用于 iOS 的 Google Analytics SDK 已更新,其 SQL lite 文件已从 /Documents 移至 /Library。我刚刚以相同的更改重新提交了我的应用程序。会告诉你进展如何。