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

时间:2014-05-06 04:09:10

标签: ios objective-c icloud appstore-approval

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

现在我已将所有资产和数据库sqlite数据移动到库/应​​用程序支持/脱机数据中,并将所有内容标记为排除到iCloud,使用这个非常棒的StandardPath

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

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

这里有similar post,OP设法将0kb备份到icloud。

  

我们发现您的应用不符合iOS数据存储指南,这是App Store审核指南所要求的。

     

特别是,我们发现在发布和/或内容下载时,您的   应用商店7.1 MB。要检查应用存储的数据量:

     
      
  • 安装并启动您的应用
  •   
  • 转到设置> iCloud>存储&备份>管理存储
  •   
  • 如有必要,请点按“显示所有应用”
  •   
  • 检查应用的存储空间
  •   
     

iOS数据存储指南表明只有内容即   用户使用您的应用创建,例如文档,新文件,编辑等,   应该由iCloud支持。

     

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

     

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

     

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

1 个答案:

答案 0 :(得分:0)

如果您不想备份到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;
}