设置不备份标志后,应用程序大小在 iCloud 中不会改变

Posted

技术标签:

【中文标题】设置不备份标志后,应用程序大小在 iCloud 中不会改变【英文标题】:Application size won't change in iCloud after do not backup flag is set 【发布时间】:2013-06-20 18:56:22 【问题描述】:

我发现了几个类似的问题: link1 link2

我添加了链接 2 中描述的代码: 图片下载保存到目录后调用此方法。

-(BOOL)addSkipBackupAttributeToItemAtURL:(NSURL *)URL 
assert([[NSFileManager defaultManager] fileExistsAtPath: [URL path]]);

if (&NSURLIsExcludedFromBackupKey == NULL) 
    // Use ios 5.0.1 mechanism

    const char *filePath = [[URL path] fileSystemRepresentation];
    const char *attrName = "com.apple.MobileBackup";
    u_int8_t attrValue = 1;
    int result = setxattr(filePath, attrName, &attrValue, sizeof(attrValue), 0, 0);
    return result == 0;

else 
    // Use NSURLIsExcludedFromBackupKey mechanism, iOS 5.1+
    NSError *error = nil;
    BOOL success = [URL setResourceValue:[NSNumber numberWithBool:YES]
                                  forKey:NSURLIsExcludedFromBackupKey
                                   error:&error];
    if(!success) 
        NSLog(@"Error excluding %@ from backup %@", [URL lastPathComponent], error);
    
    else 
        NSLog(@"Path is %@:", [URL path]);
    
    //Check your error and take appropriate action
    return success;

在 iCloud 中签入时,应用程序的大小仍然是 50.7 Mb(我正在使用 5.1.1 iOS 版本的 iPhone 上进行测试),因此使用 flag 没有任何效果,尽管成功的值为“YES”。 请告诉我我做错了什么?

【问题讨论】:

您是否为您的应用清除了 iCloud 并重新开始?如果文件已经在 iCloud 中,然后您更新标志,它可能无效。 我试过这个:删除应用程序,在 iCloud 中关闭备份,在 iCloud 中打开备份。然后我再次安装app,下载数据,查看iCloud,数据还在iCloud中。 当我删除应用程序时,在 iCloud 中关闭备份,在 iCloud 中打开备份,然后再次安装应用程序并转到 iCloud,我可以看到我的应用程序并且在数据大小字段中没有写入数据. 【参考方案1】:

问题出在制作文件路径 URL 的方法上。目前我已更改为 + fileURLWithPath:isDirectory: 并且一切正常。我的应用程序在 iCloud 存储中的大小显示为 0.9KB(以前是 50.7Mb)。

【讨论】:

以上是关于设置不备份标志后,应用程序大小在 iCloud 中不会改变的主要内容,如果未能解决你的问题,请参考以下文章

ios应用, 设置不自己主动备份到iCloud

ios应用, 设置不自己主动备份到iCloud

苹果手机备份文件目录各文件啥位置

iCloud:禁用文件增量备份

苹果手机同步备份的文件在哪里

ios - 每次触发 application:openURL:sourceapplication 时,iCloud 备份大小都会增加