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

时间:2016-02-26 06:34:01

标签: ios iphone backup ios9 appstore-approval

我的应用程序多次被应用商店拒绝,因为我们没有关注iOS数据存储指南'。我用&#34标记了所有文档目录;不用备份"属于苹果审核小组建议的属性,如图所示:

- (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审核小组拒绝,实际上我不想要任何备份。 跳过备份属性有什么我错过的吗?或者我的代码有什么问题?请帮忙。谢谢。

3 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:2)

尝试使用NSCachesDirectory代替NSDocumentDirectory来存储子文件夹/文件。

答案 2 :(得分:0)

即使我正在使用'也不要备份'属性i将可下载内容存储在 \ Documents目录中,因此根据优先级 \ Documents 内容将自动备份到icloud。

Apple doc says

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

  2.   
  3. 应该存储可以重新下载或重新生成的数据    / Library / Caches目录。您的文件示例   应该在Caches目录中包含数据库缓存文件和   可下载的内容,例如杂志,报纸和版画所使用的内容   地图应用程序。

  4.   
  5. 暂时使用的数据应存储在    / tmp目录。虽然这些文件没有备份   在iCloud之前,记得在完成后删除这些文件   他们不会继续消耗用户的空间   设备

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

  8.