iOS 数据存储问题 - 即使在 NSURLIsExcludedFromBackupKey 之后也被拒绝



我的应用因未遵循"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审查团队拒绝,实际上我不想备份任何东西。我错过了跳过备份属性的内容吗? 或者我的代码中有什么问题?请帮忙。谢谢。

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

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

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

即使

我使用"不备份"属性,我也将可下载内容存储在\文档目录中,因此根据优先级\文档内容将自动备份到icloud。

苹果文档 说:

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

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

  3. 仅临时使用的数据应存储在 /tmp 目录。虽然这些文件不受支持 直到iCloud,请记住在完成操作后删除这些文件 它们,以便它们不会继续占用用户的空间 装置。

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

相关内容

最新更新