gpt4 book ai didi

ios - 如何知道文件是否会在 iCloud 中备份?

转载 作者:可可西里 更新时间:2023-11-01 05:46:43 27 4
gpt4 key购买 nike

我的应用被拒绝了,因为我使用 Documents 目录来存储我从服务器下载的一些文件。

我从 Apple 的文档中读到:https://developer.apple.com/library/ios/#qa/qa1719/_index.html我找到了这段代码:addSkipBackupAttributeToItemAtURL -> NSString parameter?

我还读到这段代码对 iOS 版本 >= 5.0.1 很有用。并且 iOS 版本 < 5 不使用 iCloud 备份用户数据。但是 iOS == 5.0 使用 iCloud 备份数据,但是 flag 不起作用。

所以,我有两个问题:

首先我需要我的应用程序中的文件才能工作(比如数据库)。如果我将这些文件存储在 Caches 目录中,只要 iOS 需要就可以删除我的文件。所以我将文件存储在 Documents 目录中,即:

/Documents/db.db
/Documents/my.plist

之后,我将我的文件存储在该目录中,我为我放入该目录中的每个文件调用方法 addSkipBackupAttributeToItemAtURL。但我不知道如何测试此方法是否有效。

我在这里读过iOS 5.0.1 : How to verify that the folder is marked as "Do not back up" for iCloud?如果我使用模拟器,我可以转到应用程序的目录并运行此命令

xattr -plxv com.apple.MobileBackup <file name> 

知道文件是否被标记为不备份。

但是如果我在命令行中运行该命令,我会得到每个文件的结果:

xattr: my.plist: 没有这样的 xattr: com.apple.MobileBackup

因此,第一个问题是:我如何确定我在 Documents 目录下的文件被正确标记为不备份。我不想再次将我的应用程序上传到 AppStore,而 Apple 的人又把它扔掉了。

其次,我的应用程序在 iOS 5 上运行。如果用户使用 iOS 5.0,我不想检查每个文件并将其存储在 Caches 目录中,每次我需要使用文件时检查“stills” “那里。我有一个 500mb 的数据库,我不能每次都下载。

因此,第二个问题是:如果在“iOS 部署目标”中我选择了 5.1,并且在build设置 > 基础 SDK 中我也选择了 5.1,这意味着 iOS 版本 < 5.1 的用户将无法下载我的应用程序,对吧?所以我不必担心使用 iOS 5.0 的用户会窃取我的数据,对吧?

最佳答案

我相信答案很简单:不要使用文档目录。

如果您不使用文档目录并且不乱用 iCloud 配置,则不会备份该数据。

我相信您可以使用这个问题的答案中描述的库文件夹:How can I get a writable path on the iPhone?

编辑:为了回答评论,根据位于 http://developer.apple.com/library/ios/DOCUMENTATION/iPhone/Conceptual/iPhoneOSProgrammingGuide/PerformanceTuning/PerformanceTuning.html 的苹果文档,我错误地假设只备份了文档数据。但我仍然认为 Library 文件夹是存放非备份数据库的最佳位置。

但是,您应该使用 setResourceValue:forKey:error: 方法设置一个非备份标志,如同一文档中所述。

文档中不清楚如何在 iOS 版本 == 5.0 上不备份数据,除非您愿意重新创建已删除的缓存数据(我相信您不愿意,因此您的问题)。

如果不是问题,请将您的应用锁定为仅在 iOS 5.1 或更高版本上运行(将您的应用设置为在 XCode 上的最低 iOS 版本上运行,请记住清理整个构建并重新构建)。

关于ios - 如何知道文件是否会在 iCloud 中备份?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11014986/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com