我的应用因未遵循"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。
苹果文档 说:
仅用户生成的文档和其他数据,或者不能 否则由您的应用程序重新创建,应存储在 /Documents 目录,并将由 iCloud 自动备份。
可以再次下载或重新生成的数据应存储在 /Library/Caches 目录。您的文件示例 应放入缓存目录中,包括数据库缓存文件和 可下载的内容,例如杂志、报纸和 映射应用程序。
仅临时使用的数据应存储在 /tmp 目录。虽然这些文件不受支持 直到iCloud,请记住在完成操作后删除这些文件 它们,以便它们不会继续占用用户的空间 装置。
使用"不备份"属性指定应 即使在存储空间不足的情况下,也能保留在设备上。使用此属性 使用可以重新创建但即使在低位也需要保留的数据 存储情况,用于应用正常运行或因为 客户希望在离线使用期间使用它。此属性 适用于标记的文件,无论它们在哪个目录中, 包括文档目录。这些文件不会被清除,并且 不会包含在用户的 iCloud 或 iTunes 备份中。因为 这些文件确实会占用设备上的存储空间,由你的应用负责 用于定期监视和清除这些文件。