【问题标题】:iOS Data Storage issue - Rejected even after NSURLIsExcludedFromBackupKeyiOS 数据存储问题 - 即使在 NSURLIsExcludedFromBackupKey 之后也被拒绝
【发布时间】:2016-06-09 06:36:33
【问题描述】:

我的应用因未遵循“iOS 数据存储指南”而多次被应用商店拒绝。我已按照苹果审核团队的建议将所有文档目录标记为“不备份”属性,如下所示:

- (BOOL)addSkipBackupAttributeToItemAtPath:(NSString *) filePathString
{
    NSURL* URL= [NSURL URLWithString:filePathString];

    NSError *error = nil;
    BOOL success = [URL setResourceValue: [NSNumber numberWithBool: YES]
                                  forKey: NSURLIsExcludedFromBackupKey error: &error];

    return success;
}

我已经为所有 NSDocumentDirectory 调用了上面的addSkipBackupAttributeToItemAtPath 方法,如图所示:

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    [self addSkipBackupAttributeToItemAtPath:[paths objectAtIndex:0]];

并且审核团队表示它仍在将一些数据作为备份存储到 iCloud,并且被 Apple 审核团队拒绝,实际上我不想备份任何内容。 跳过备份属性有什么我错过的吗?或者我的代码有什么问题?请帮忙。谢谢。

【问题讨论】:

  • 我们刚刚收到与您一样的拒绝,我们对每个目录进行了全面检查,以确保它们都是使用 NSURLIsExcludedFromBackupKey 创建的,手指交叉
  • @Bastet,有什么解决办法吗?
  • 我们的一些应用程序在这个问题上被拒绝了,尽管我们只发现了几个 KB。我们根据我们的观察以截图回复。一个是批准的。其他人被拒绝,修改后的重新提交现在正在审核中。
  • 我们通过安装我们的应用程序并检查 iCloud 中的空间,用新设备的电影来回应拒绝。第二天就通过了。
  • 最后这是我的问题:可以再次下载或重新生成的数据应存储在 /Library/Caches 目录中。您应该放在 Caches 目录中的文件示例包括数据库缓存文件和可下载内容,例如杂志、报纸和地图应用程序使用的内容。

标签: ios iphone backup ios9 appstore-approval


【解决方案1】:

在 addSkipBackupAttributeToPath 方法中编写此代码。我有同样的问题,并通过编写此代码来解决。

- (void)addSkipBackupAttributeToPath:(NSString*)path
{
   u_int8_t b = 1;
   setxattr([path fileSystemRepresentation], "com.apple.MobileBackup", &b, 1, 0, 0);
}

【讨论】:

    【解决方案2】:

    尝试使用NSCachesDirectory 而不是NSDocumentDirectory 来存储子文件夹/文件。

    【讨论】:

    • 是的,使用 NSCachesDirectory。还要在模拟器中运行,看看除了您希望保存的数据之外,是否还有任何数据正在保存。您可能忘记删除一些您之前在项目中使用过的代码。
    【解决方案3】:

    尽管我使用了“不备份”属性,但我将可下载的内容存储在 \Documents 目录 中,因此根据优先级 \Documents 内容将自动备份到 icloud。

    Apple doc says:

    1. 仅限用户生成的或不能生成的文档和其他数据 否则由您的应用程序重新创建,应存储在 /Documents 目录,会被 iCloud 自动备份。

    2. 可以再次下载或重新生成的数据应存储在 /Library/Caches 目录。您的文件示例 应该放在Caches目录下的包括数据库缓存文件和 可下载的内容,例如杂志、报纸和 地图应用程序。

    3. 仅临时使用的数据应存储在 /tmp 目录。虽然这些文件没有备份 至 iCloud,请记住在完成后删除这些文件 以便他们不会继续消耗用户的空间 设备。

    4. 使用“不备份”属性指定应 即使在存储空间不足的情况下,仍保留在设备上。使用此属性 数据可以重新创建,但即使在较低的情况下也需要保留 应用程序正常运行的存储情况或因为 客户希望它在离线使用期间可用。这个属性 适用于标记的文件,无论它们位于哪个目录中, 包括 Documents 目录。这些文件不会被清除并且 不会包含在用户的 iCloud 或 iTunes 备份中。因为 这些文件确实使用设备上的存储空间,您的应用程序负责 用于定期监控和清除这些文件。

    【讨论】:

      猜你喜欢
      • 2021-10-31
      • 2016-06-25
      • 2014-06-30
      • 1970-01-01
      • 2012-06-27
      • 2014-06-17
      • 2012-09-12
      • 1970-01-01
      • 2021-12-18
      相关资源
      最近更新 更多