【问题标题】:Why was my application still rejected after excluding files from iCloud backup using this code?为什么我的应用程序在使用此代码从 iCloud 备份中排除文件后仍然被拒绝?
【发布时间】:2012-05-22 06:02:13
【问题描述】:

我添加了以下代码以从 iCloud 备份中排除文件,但我的应用程序仍然被拒绝:

   - (BOOL)addSkipBackupAttributeToItemAtURL:(NSURL *)URL
{
    if (&NSURLIsExcludedFromBackupKey == nil) { // iOS <= 5.0.1
        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 { // iOS >= 5.1


        NSLog(@"%d",[URL setResourceValue:[NSNumber numberWithBool:YES] forKey:NSURLIsExcludedFromBackupKey error:nil]);
        return [URL setResourceValue:[NSNumber numberWithBool:YES] forKey:NSURLIsExcludedFromBackupKey error:nil];
    }
}

在模拟器的情况下,我将以下 url 作为 NSURL 传递:

file:///Users/TEST/Library/Application%20Support/iPhone%20Simulator/5.1/Applications/62854BAB-AB51-4771-895F-28C61983A7AC/Documents/MyFolder"

谁能指出我的错误在哪里?

【问题讨论】:

  • 感谢@JackyBoy 提供信息。现在是 57%。现在还好吗?
  • 我这样说是因为人们会倾向于帮助你更多。
  • 你能回答我的问题吗?它非常紧急。

标签: iphone ios icloud


【解决方案1】:

代码对我来说看起来不错。

您确定所有文件/文件夹都正确设置了标志。

你可以通过这个终端命令来做到这一点 -> ls -al -@

【讨论】:

    【解决方案2】:

    问题在于您传入的 URL。

    即使您将数据存储在文件夹中,该数据仍然是两件事

    1. 在文档文件夹中,所以会同步
    2. 文件夹与您的应用关联

    要解决此问题,您需要将其存储在 /Library 而不是 /Documents

    所以你的网址是

    file:///Users/TEST/Library/Application%20Support/iPhone%20Simulator/5.1/Applications/62854BAB-AB51-4771-895F-28C61983A7AC/Library/MyFolder

    自 iCloud 实施以来,Apple 的新偏好是在 Library 文件夹中存储不可同步的数据或任何外部数据

    【讨论】:

    • 如果我将我的应用程序放在库文件夹中,Apple 会拒绝它。如果你查看它的文档,上面写着“将库子目录用于您不希望向用户公开的任何文件。您的应用程序不应将这些目录用于用户数据文件。”我发现我必须使用NSURL *url = [NSURL URLWithString:filename]; [url setResourceValue: [ NSNumber numberWithBool: YES ] forKey: NSURLIsExcludedFromBackupKey error: nil ]; 对我的文件进行编码
    • @justdan0227 在我写这个答案的时候(大约 3 年前),这是 Apple 的偏好,如果您要存储用户修改的内容,那么它应该存储在 Documents 中,因为通常您想要它在设备之间同步。在我提交答案时,将数据存储在库中以使其不同步是可以接受的
    猜你喜欢
    • 2012-06-09
    • 2014-12-03
    • 2012-08-19
    • 1970-01-01
    • 2015-01-24
    • 2021-10-09
    • 2011-03-18
    • 2015-01-21
    • 1970-01-01
    相关资源
    最近更新 更多