ios - 如何理解iOS "Documents and data"(云备份相关)

标签 ios app-store backup icloud

我的应用被 Apple 拒绝,因为他们说它不遵循“iOS 数据存储指南”。

我已使用以下代码更新应用程序以标记下载的内容,这样它就不会备份到云端...

- (BOOL)addSkipBackupAttributeToItemAtPath:(NSString *)filePathString {
    NSURL *fileURL = [NSURL fileURLWithPath:filePathString];

    NSLog(@"Going to add skip attribute to " @"%@", filePathString);

    assert([[NSFileManager defaultManager] fileExistsAtPath: [fileURL path]]);

    NSError *error = nil;

    BOOL success = [fileURL setResourceValue:[NSNumber numberWithBool: YES]
                                      forKey: NSURLIsExcludedFromBackupKey
                                       error: &error];
    NSLog(@"Added skip attribute to " @"%@", filePathString);

    return success;
}

但是,当我检查设置 -> 常规 -> 使用 -> MyApp 时,它显示“文档和数据”> 30Mb。从 30Mb 的内容已下载到应用程序的角度来看,这是正确的,但这是否也意味着这 30Mb 将备份到云端?

换句话说,如果我标记文件以便不备份它们,它们会被包含在“文档和数据”值中还是被排除在外?

干杯!

最佳答案

用户创建的或用户私有(private)的且不能消失的数据应位于 Documents 目录中。此外,对用户有值(value)且无法重新创建的数据应位于 Documents 目录中。 Documents 目录中的文件会自动备份到 iCloud。

从网上下载的数据应该保存到Caches目录,因为很容易再次下载,所以保存到iCloud没有意义。数据只会占用 iCloud 中的空间。如果用户需要恢复他的设备,应用程序可以从最初下载数据的地方重新下载数据。如果硬盘上的可用空间量变得非常低,则操作系统可以删除 Caches 目录。

有一种特殊情况,即保存在 Documents 目录中的文件设置了 NSURLIsExcludedFromBackupKey 标志。这适用于对用户有值(value)的数据,即使没有互联网连接也应始终可用,但另一方面,可以在需要时轻松重新下载或更新。

包含在 iCloud 备份中的是 Documents 目录的内容,不包括设置了 NSURLIsExcludedFromBackupKey 标志的文件。不备份位于应用程序容器内的所有其他目录。


设置中的“文档和数据”是指文档文件夹的大小。计算不考虑是否从 iCloud 备份中排除了任何内容。大小不是指 iCloud 备份中数据的大小。但是,如果 Settings.app 显示“30MB”,您可以确定 iCloud 备份至少不会超过 30MB。

关于ios - 如何理解iOS "Documents and data"(云备份相关),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24314294/

相关文章:

ios - 在自定义框架中使用聚合目标

ios - 在 OS X 上使用 ndenv 设置 React Native

ios - 打印后删除文件

xcode - 我可以用来提交到应用商店的最低 Xcode 版本是多少

ios - 如果我的 APP 没有数据持久性,它会获得批准吗?我将模型保存在 appDelegate

linux - 将文件从多个 Linux 服务器移动到中央 Windows 存储服务器

ios - 编译错误 AFNetworking ,语义问题?

windows - 需要mac应用商店吗?

java - 如何在 Android 上以编程方式备份​​应用程序

magento - 哪些 Magento 网站目录和文件不应该使用 Codeguard 等云备份解决方案进行备份?