Ios iCloud正在备份我应用程序的68字节(plist文件),我是否需要设置一个标志将其从iCloud备份中排除?

Ios iCloud正在备份我应用程序的68字节(plist文件),我是否需要设置一个标志将其从iCloud备份中排除?,ios,objective-c,icloud,appstore-approval,Ios,Objective C,Icloud,Appstore Approval,我的iOS应用被app Store拒绝,因为我已将一些图像和SQLite数据库存储到Documents目录中,并且没有为它们设置标志(排除同步到iCloud),这违反了iOS数据存储指南 现在,我已经将所有内容(例如资产和数据库sqlite数据)移动到库/应用程序支持/脱机数据中,并使用这个很棒的库将所有内容标记为排除在iCloud之外 现在,当我运行应用程序时,我仍然发现68字节的数据正在备份到iCloud,我发现它是位于Library/Preferences/au.com.xxxx.plis

我的iOS应用被app Store拒绝,因为我已将一些图像和SQLite数据库存储到Documents目录中,并且没有为它们设置标志(排除同步到iCloud),这违反了iOS数据存储指南

现在,我已经将所有内容(例如资产和数据库sqlite数据)移动到库/应用程序支持/脱机数据中,并使用这个很棒的库将所有内容标记为排除在iCloud之外

现在,当我运行应用程序时,我仍然发现68字节的数据正在备份到iCloud,我发现它是位于Library/Preferences/au.com.xxxx.plist中的plist文件(正好是68字节)

我的问题是,我是否也应该为plist目录设置一个标志?还是没关系?因为我不想再次被拒绝

这里有一个备份,OP设法将0kb备份到icloud

我们发现您的应用程序没有遵守iOS数据存储指导原则,这是应用商店审查指导原则所要求的

特别是,我们发现在发布和/或内容下载时 应用商店7.1MB。要检查应用程序存储的数据量,请执行以下操作:

  • 安装并启动你的应用程序
  • 进入设置>iCloud>存储和备份>管理存储
  • 如有必要,点击“显示所有应用”
  • 检查应用程序的存储空间
iOS数据存储指南指出,只有 用户使用您的应用程序创建,例如文档、新文件、编辑等。, 应该由iCloud支持

应用程序使用的临时文件应仅存储在/tmp中 目录请记住删除存储在此位置的文件 当用户退出应用程序时

可以重新创建但必须保留以正常运行的数据 您的应用程序-或者因为客户希望它可以脱机使用 使用-应标记为“请勿备份”属性。对于NSURL 对象,添加NSURLSecludedFromBackupKey属性以防止 正在备份的相应文件。对于CFURLRef对象,使用 对应的kCFURLIsExcludedFromBackupKey属性

有关更多信息,请参阅技术问答1719:如何预防 从备份到iCloud和iTunes?的文件


如果您不希望备份到iCloud,请将此方法添加到您的应用程序代理中

- (BOOL)addSkipBackupAttributeToItemAtURL:(NSURL *)URL
{
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectoryPath = [paths objectAtIndex:0];

    const char* filePath = [documentsDirectoryPath 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;
}

AppStore审查人员的方式很神秘,但是一个小于1K的plist文件可能不是问题,特别是如果用户确实希望备份用户的首选项。您好,Thilo,感谢您的评论。我打开plist文件,发现它是我为用户(NSUserDefaults)设置的一个标志,用于提醒用户下载已从服务器完成。因此,您是对的,这实际上是用户希望备份的用户首选项。我的应用程序在我重新提交后很快就被批准了。