我已将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?。
答案 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;
}