Iphone 应用程序必须遵循iOS数据存储指导原则,在/文档中没有任何内容,但仍有一些KB发送到iCloud

Iphone 应用程序必须遵循iOS数据存储指导原则,在/文档中没有任何内容,但仍有一些KB发送到iCloud,iphone,objective-c,xcode,mobile,icloud,Iphone,Objective C,Xcode,Mobile,Icloud,我的应用被拒绝,原因如下: 您的应用程序未按照要求遵守iOS数据存储指导原则 根据应用商店审查指南 您的应用程序将4.0 MB的数据备份到每个用户的iCloud空间 发射请确保为所有项目设置“请勿备份”属性 用户未生成或修改的数据。检查多少钱 您的应用程序正在存储的数据: 安装并启动你的应用程序 进入设置>iCloud>存储和备份>管理存储 如有必要,选择“显示所有应用” 检查应用程序的存储空间 iOS数据存储指南指出,只有 用户可以使用您的应用程序创建(文档、新文件、编辑等) 存储在/Do

我的应用被拒绝,原因如下:

您的应用程序未按照要求遵守iOS数据存储指导原则 根据应用商店审查指南

您的应用程序将4.0 MB的数据备份到每个用户的iCloud空间 发射请确保为所有项目设置“请勿备份”属性 用户未生成或修改的数据。检查多少钱 您的应用程序正在存储的数据:

  • 安装并启动你的应用程序
  • 进入设置>iCloud>存储和备份>管理存储
  • 如有必要,选择“显示所有应用”
  • 检查应用程序的存储空间
iOS数据存储指南指出,只有 用户可以使用您的应用程序创建(文档、新文件、编辑等) 存储在/Documents目录中,并备份到iCloud

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

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

据我所知,/documents文件夹中存储的所有内容都将存储在iCloud中,并且该文件夹应仅包含用户生成的数据。现在,我已将/documents中的所有文件移动到缓存文件夹中。然而,当我用一台设备测试应用程序时,仍然有大约28kb的数据被发送到iCloud(据Organizer称,该设备的应用程序沙箱的/documents文件夹中没有任何内容)。我的项目不支持iCloud,所以当文档中没有任何内容时,我不明白发送的是什么

有没有办法检查到底是什么发送到iCloud的

另外,我的项目现在的目标是iOS 5.0。据我在5.0中了解,没有任何东西可以阻止最终清除缓存文件夹。我应该只支持>=5.0.1吗

现在,我已将/documents中的所有文件移动到缓存文件夹中

你是否错过了你引用的最后一段?如该段所述,您可以将数据标记为“请勿备份”。因此,请将文件保留在Documents目录中,并对其进行适当的标记

有没有办法检查到底是什么发送到iCloud的

将浏览器指向

另外,我的项目现在的目标是iOS 5.0。据我所知 5.0没有任何东西可以阻止最终清除缓存文件夹。我应该只支持>=5.0.1吗

在5.0中无法做到这一点,因此必须将所有内容存储在一个可能被操作系统清理的地方,如
NSCachesDirectory
。我认为你最好的选择是处理所有5.0、5.0.1和5.1的情况;对5.0使用
NSCachesDirectory
,对5.0.1和5.1使用
NSApplicationSupportDirectory
。这真是一团糟,但正如您所注意到的,苹果在5.0.1中快速添加了新属性,并在5.1中再次改进了体验

YMMV表示,我们拒绝了应用程序,因为我们没有处理所有不同的案例

然而,当我用设备测试应用程序时,仍然有大约28kb的内存 已发送到iCloud(的/documents文件夹中没有任何内容 该设备的应用程序沙箱,根据组织者)。我的项目没有 支持iCloud,所以我不明白当有 文件里什么都没有

这适用于用户将其设备备份到iCloud的情况,而不是应用程序中使用iCloud的情况。我不担心额外的28KB,我在我们的应用程序中也看到了这一点,我认为这可能是第三方库的开销,如分析包或其他在这些位置存储少量数据的项目。如前所述,NSUserDefaults也可以存储在此处。如果您有兴趣,可以从Xcode organizer下载数据并查看存储的内容

下面是处理5.0.1和5.1中的“不备份”属性的方法

+ (BOOL)addSkipBackupAttributeToItemAtURL:(NSURL *)URL {
    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];
       //Check your error and take appropriate action
        return success;
    }
}

你正在检查设置以查看哪些文件被发送到iCloud?据我所知,你不能支持5.0.1+,只有5.0+和5.1+@Jack Humphries我不确定我是否理解正确。我正在检查iPhone的设置,在“管理存储->备份”下,我可以看到我的应用程序,但它只显示iCloud需要多少空间,而不是具体的文件本身。正如我所说,我现在使用的是5.0,此功能适用于5.0.1及更高版本。即使我确实使用了它,它也不会回答最后剩下的几个文件是什么,我只会标记我以前放在缓存文件夹中的文件。你发送的链接看起来很有希望,不过我会调查的,谢谢!