使用NSURLIsExcludedFromBackupKey禁用文档中文件夹的备份



截至目前,我的应用程序在Documents文件夹中包含关键文件,这些文件将经过备份过程,以便日后恢复。这些文件是由用户创建的。但是,Documents目录中还有一个名为/Templates的文件夹,需要将其从备份中排除。这包括随应用程序下载的文件,用于帮助从基础创建新文件:模板。

因此,我的问题是:是否有任何方法可以排除Documents目录中的单个文件夹?如果可能的话,我也更愿意把它保存在Documents目录中。这是我从iTunes Connect解决中心收到的信息。

我们发现您的应用程序不遵循iOS数据存储指南,根据App Store审查指南要求。

特别是,我们发现在发布和/或内容下载时应用程序存储102.71 MB。要检查您的应用程序存储了多少数据:

  • 安装并启动您的应用程序
  • 转到"设置">iCloud>存储&备份>管理存储
  • 如有必要,点击";显示所有应用程序">
  • 检查应用程序的存储

iOS数据存储指南指出用户使用您的应用程序创建,例如文档、新文件、编辑等。,应该由iCloud备份。

应用程序使用的临时文件应仅存储在/tmp中目录请记住删除存储在此位置的文件当用户退出应用程序时。

可以重新创建但必须持久化才能正常运行的数据你的应用程序-或者因为客户希望它可以离线使用使用-应标有";不要备份";属性对于NSURL对象,添加NSURLIsExcludedFromBackupKey属性以防止相应的文件无法备份。对于CFURLRef对象,使用相应的kCFURLIsExcludedFromBackupKey属性。

有关更多信息,请参阅技术问答;A 1719:我该如何预防文件无法备份到iCloud和iTunes?。

有必要修改您的应用程序以满足iOS的要求数据存储指南。如果您在复制报告的问题,请尝试测试技术中描述的工作流程Q&QA1764:如何重现针对App Store报告的错误提交。

如果您在使用上述资源后有代码级别的问题,您可能希望咨询Apple Developer技术支持。什么时候DTS工程师跟进您,请准备提供:

  • 拒绝问题的完整详细信息
  • 屏幕截图
  • 复制问题的步骤
  • 符号化的崩溃日志-如果您的问题导致崩溃日志
- (BOOL)addSkipBackupAttributeToItemAtURL:(NSURL *)URL
{
if (URL) {
assert([[NSFileManager defaultManager] fileExistsAtPath:[URL path]]);
NSError *error = nil;
BOOL success = [URL setResourceValue: [NSNumber numberWithBool: YES]
forKey: NSURLIsExcludedFromBackupKey error: &error];
if(!success){
NSLog(@"Error excluding %@ from backup %@", [URL lastPathComponent], error);
}
return success;
}
else
{
return YES;
}
}

您可以传递文件夹的url,这应该可以工作。这就是我们禁用整个文档文件夹备份的方法。

最新更新