在 icloud 上禁用文档文件夹及其所有子文件夹的备份?

Ank*_*ava 5 iphone objective-c nsfilemanager ios icloud

我有一个已经在运行的企业应用程序,它在文档文件夹中存储了很多文档。我希望禁用 Documents 文件夹内所有这些文档和文件夹的 iCloud 备份。问题是文件夹内的内容不断动态变化,kCFURLIsExcludedFromBackupKey为每个文件添加的想法 听起来有点困难,因为我的代码中有多个类可以写入文档目录。

有什么办法可以禁用整个文档文件夹及其子文件夹的上传。

Dun*_*age 5

也许文件正在动态更改,因为它们是从服务器或类似设备定期更新的?如果是这样,那么答案是将您的文件存储从<Application_Home>/Documents目录移动到<Application_Home>/Library/Caches目录。这些文件将不会被备份。如果需要,这当然仅适用于可以在将来重新下载或重新创建数据的情况。

有关概述,请参阅此 Apple 文档:https : //developer.apple.com/icloud/documentation/data-storage/index.html


Din*_*hik 5

在您的应用程序的 appDelegate 中,使用以下方法

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
Run Code Online (Sandbox Code Playgroud)

添加此代码

    NSArray *urlArray = [[NSFileManager defaultManager] URLsForDirectory: NSDocumentDirectory inDomains: NSUserDomainMask];
    NSURL *documentsUrl = [urlArray firstObject];

    NSError *error = nil;
    BOOL success = [documentsUrl setResourceValue: [NSNumber numberWithBool: YES]
                                  forKey: NSURLIsExcludedFromBackupKey error: &error];
    if(!success){
        NSLog(@"Error in disabling %@ from backup %@", [documentsUrl lastPathComponent], error);
    }
Run Code Online (Sandbox Code Playgroud)