我的应用程序被拒绝,因为我使用 Documents 目录来存储我从服务器下载的一些文件。
我从 Apple 的文档中读到了这个:https ://developer.apple.com/library/ios/#qa/qa1719/_index.html我发现了这个代码:addSkipBackupAttributeToItemAtURL -> NSString 参数?
我还读到这段代码对 iOS 版本 >= 5.0.1 很有用。并且 iOS 版本 < 5 不使用 iCloud 备份用户数据。但是那个 iOS == 5.0 使用 iCloud 来备份数据,但是这个标志不起作用。
所以,我有两个问题:
首先,我需要我的应用程序中的文件才能工作(如数据库)。如果我在 iOS 想要的任何时候将这些文件存储在 Caches 目录中,就可以删除我的文件。所以我将文件存储在 Documents 目录中,即:
/Documents/db.db
/Documents/my.plist
之后,我将文件存储在该目录中,我为放入该目录中的每个文件调用方法 addSkipBackupAttributeToItemAtURL。但我不知道如何测试这种方法是否有效。
我在这里读过iOS 5.0.1:如何验证该文件夹是否被标记为 iCloud 的“不备份”?如果我使用模拟器,我可以转到应用程序的目录并运行此命令
xattr -plxv com.apple.MobileBackup <file name>
了解文件是否已标记为不备份。
但是,如果我在命令行中运行该命令,我会为每个文件得到以下结果:
xattr:my.plist:没有这样的 xattr:com.apple.MobileBackup
所以,第一个问题是:如何确定 Documents 目录下的文件被正确标记为不备份。我不想再次将我的应用程序上传到 AppStore 并且 Apple 的人再次将其丢弃。
其次,我的应用程序在 iOS 5 上运行。如果用户有 iOS 5.0,我不想检查每个文件并将其存储在 Caches 目录中,并且每次我需要使用文件时检查是否“静止”。我有一个 500mb 的数据库,我不能每次都下载。
所以,第二个问题是:如果在“iOS 部署目标”中我选择了 5.1,并且在 Build Settings > Base SDK 我也选择了 5.1,这意味着 iOS 版本 < 5.1 的用户将无法下载我的应用程序,对吗?所以我不需要担心与使用 iOS 5.0 的用户一起获取我的数据,对吧?