IOS 被 AppStore 拒绝

IOS rejected from AppStore

我已经向 AppStore 提交了我的申请,但我的申请被拒绝了。

这是一个原因:

我已经按照这个 link 工作了,但我的申请也被拒绝了。 2.23: Apps must follow the iOS Data Storage Guidelines or they will be rejected

这通常意味着您正在存储一些数据、缓存文件或个人资料图片,这些数据可以由您的应用recreated/redownloaded存储在 iCloud 将备份的位置。这会浪费用户数据和 Apple 的服务器 space。在过去 6 个月左右的时间里,他们确实一直在打击这个问题。

您可以将文件存储在 iCloud 不备份的地方(/Library/Application 支持),或者使用不备份属性标记文件。

通过如下代码获取该文件夹:

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 的数据!

你不能那样设计应用程序。请记住,用户只有有限的存储和备份 space。 Apple的文档在这里对规则说的很清楚:

https://developer.apple.com/icloud/documentation/data-storage/index.html

您应该只将大数据存储在 Caches 目录中,它可以被清除并且不会被备份。

如果您要存储大量可以再次下载或重新生成的数据,您将希望将其存储在 <Application_Home>/Library/Caches 而不是 <Application_Home>/Documents 目录中。

或者,您可以使用应用委托中的 addSkipBackupAttributeToItemAtURL 方法阻止设备将某些文件备份到 iCloud。