【问题标题】:2.23 - Apps must follow the iOS Data Storage Guidelines or they will be rejected2.23 - 应用程序必须遵循 iOS 数据存储指南,否则将被拒绝
【发布时间】:2015-05-06 09:01:42
【问题描述】:

由于以下问题,我的应用被苹果拒绝了 3 次,

我的应用程序正在使用脱机用途,因此我将下载的文件存储在我们的文档目录中,因此根据 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;
    }
}

【问题讨论】:

标签: ios


【解决方案1】:

文档目录旨在用于用户生成的文件(即文档)。您可以将数据放在几个不同的地方,但如果您要下载大量内容并希望在离线时保留,请考虑使用 缓存 区域,该区域不支持无论如何默认,系统可以根据需要清除,因此请准备好在必要时重新下载。 (临时目录容易被更频繁地清除,所以我不推荐它,除非在每次应用启动时都下载数据。)

您可以通过以下方式获取它的路径:

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

More on app filesystem here. 如果它具有更永久的性质,您可能还想把它放在Library 区域的其他地方。

【讨论】:

  • 永远不要将您的数据库文件存储在Caches目录中!!!!当缺少可用空间时,iOS 会清理它们。所以有一天,您的用户不会在您的应用中看到他们的数据,这会非常令人惊讶!
【解决方案2】:

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

【讨论】:

  • 临时目录应该只用于真正临时的数据(即,在应用程序的同一运行中使用)。根据 OP 保留数据以供离线使用建议缓存或库中的其他位置,而不是临时。
猜你喜欢
  • 2012-12-02
  • 2014-04-03
  • 1970-01-01
  • 1970-01-01
  • 2016-08-10
  • 2012-06-27
  • 2012-12-03
  • 1970-01-01
  • 2014-08-29
相关资源
最近更新 更多