2.23 - 应用必须遵循iOS数据存储指南,否则将被拒绝

时间:2015-03-05 04:54:48

标签: ios

我的应用程序因以下问题被苹果拒绝了三次,

我的应用程序正在使用脱机目的,所以我将下载的文件存储在我们的文档目录中,因此根据Apple建议我调用每个文档目录调用进程的备份密钥禁用过程的方法,即使我的应用程序被拒绝了苹果现在也是,

我拒绝申请的Apple声明如下, 2.23 - 应用必须遵循iOS数据存储指南,否则将被拒绝 感谢您进行这些修改。经过进一步审核,我们发现您的应用不符合我们的指南。

2.23详细信息

在发布和内容下载时,您的应用会存储27.78 MB,不符合iOS数据存储指南。

后续步骤

请确认iCloud仅根据iOS数据存储指南的要求备份用户使用您的应用创建的内容,例如文档,新文件,编辑等。另外,检查应用程序使用的任何临时文件是否只存储在/ tmp目录中;请记住,在确定不再需要这些文件时,请删除或删除存储在此位置的文件。

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

请帮我解决这个问题。

请从下面找到我的备份密钥处理代码。

请找到我的以下代码(用于备份密钥禁用过程)

- (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(@"DB Back up called : DB path : %@",URL);
        NSError *error = nil;
        [URL setResourceValue:[NSNumber numberWithBool:YES] forKey:NSURLIsExcludedFromBackupKey error:&error];
        return error == nil;
    }
}

2 个答案:

答案 0 :(得分:1)

文档目录旨在用于用户生成的文件(即文档)。您可以将数据放在几个不同的位置,但如果您要下载要在离线时保留的一大块内容,请考虑使用缓存区域,该区域不会由无论如何都是默认的,系统可以根据需要进行清除,因此请准备好根据需要重新下载。 (临时目录更容易被清除,所以我不推荐它,除非在每个应用程序启动时都下载数据。)

你可以通过以下方式获得它的路径:

NSString * cacheRoot = 
    (NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES))[0];

More on app filesystem here.如果它具有更长久的性质,您可能还想将其放在Library区域的其他位置。

答案 1 :(得分:0)

据我所知,下载的文件应该存储在文档目录之外,你必须在缓存中或其他地方而不是文档目录下载文件,因为文档目录数据将存储在iCloud中所以这意味着您存储在用户iCloud帐户中的所有下载数据都会减少iCloud存储空间,这也是Apple拒绝您的应用程序的原因之一。