【发布时间】:2015-06-04 02:54:02
【问题描述】:
我已经向 AppStore 提交了我的申请,但我的申请被拒绝了。
这是一个原因:
我已经按照这个链接工作了,但我的申请也被拒绝了。 2.23: Apps must follow the iOS Data Storage Guidelines or they will be rejected
【问题讨论】:
-
应用是否存储了大量不需要备份的数据?
我已经向 AppStore 提交了我的申请,但我的申请被拒绝了。
这是一个原因:
我已经按照这个链接工作了,但我的申请也被拒绝了。 2.23: Apps must follow the iOS Data Storage Guidelines or they will be rejected
【问题讨论】:
这通常意味着您将一些数据、缓存文件或个人资料图像(例如,可以由您的应用重新创建/重新下载)存储在 iCloud 将备份的位置。这浪费了苹果的用户数据和服务器空间。在过去 6 个月左右的时间里,他们确实一直在打击这件事。
您可以将文件存储在 iCloud 未备份的位置(/Library/Application Support),或者使用不备份属性标记文件。
用这样的代码获取那个文件夹:
NSString* appSupportFolder = [NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES) firstObject];
这是一个可以用来设置不备份属性的类别:
@implementation NSURL (DoNotBackupAttribute)
- (BOOL)dw_addDoNotBackupAttribute
{
if (![[NSFileManager defaultManager] fileExistsAtPath:[self path]]) return NO;
__autoreleasing NSError* error = nil;
if (![self setResourceValue:@(YES) forKey:NSURLIsExcludedFromBackupKey error:&error]) {
NSLog(@"Error: failed to set do not backup attribute on file %@, error: %@", self, [error localizedDescription]);
}
return YES;
}
@end
【讨论】:
问题是您的应用开始存储 252.96MB 数据!
您无法以这种方式设计应用。请记住,用户只有有限的存储和备份空间。 Apple 的文档对这里的规则非常清楚:
https://developer.apple.com/icloud/documentation/data-storage/index.html
您应该只将大数据存储在 Caches 目录中,该目录可以清除且不会备份。
【讨论】:
如果您要存储大量可以再次下载或重新生成的数据,您需要将其存储在<Application_Home>/Library/Caches 而不是<Application_Home>/Documents 目录中。
或者,您可以使用应用委托中的addSkipBackupAttributeToItemAtURL 方法阻止设备将某些文件备份到 iCloud。
【讨论】: