我的应用中有一个 UISwitch 供用户打开/关闭 iCloud。我想实现以下目标:当用户关闭 iCloud 时,无处不在的容器中的所有内容都将被删除并复制到本地目录作为备份。但是,一旦文件从普遍存在的容器中删除,iCloud 服务器上的副本也会被删除。这基本上清除了 iCloud 上的所有内容。
我有以下问题:
如何在不影响 iCloud 服务器上的副本的情况下删除无处不在的容器上的文件?
在禁用 iCloud 之前从普遍存在的容器中删除文件的最佳或标准做法是什么?
iCloud 在初始化/启用后是否可以完全禁用?
谢谢。
Best Answer-推荐答案 strong>
在阅读了苹果的文档和其他人的建议后,这是我的理解。我不能 100% 确定它们是否正确。欢迎评论和指正:
在 ubiquity 容器中添加或删除的任何内容都将与 iCloud 服务器同步。该应用程序无法控制这一点。
一旦用户在“设置”应用中启用了 iCloud 文档存储,应用就无法将其禁用。应用的职责是提供 UI(假设是 UISwitch )让用户指出他们希望他们的文档与应用的 iCloud 同步的位置。
如果用户通过关闭应用中的UISwitch (不是在设置中)来关闭iCloud,应用应该做的是停止查询元数据,停止收听 NSMetadataQueryDidUpdateNotification ,并停止访问 ubiquity 容器中的文件(如上面 crizzis 所述)。如果稍后用户再次打开 iCloud,则 ubiquity 容器中的文件将自动与 iCloud 同步,除非发生 Unresolved 冲突,否则无需手动合并。
关于ios - 关闭 iCloud 并从无处不在的容器中删除项目,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/43325561/
|