我的应用因违反数据存储指南而被拒绝

时间:2013-02-22 06:21:23

标签: ios

我的应用中有设置,可以限制可以为应用下载的PDF尺寸。

当下载的PDF尺寸超过该尺寸时,某些PDF将被删除。

我下载PDF并将其存储到documents文件夹。

然后,我的应用被拒绝了,因为不遵循此guideline。据我所知,我仍然可以将PDF文件下载到documents文件夹,但可以使用NSURLIsExcludedFromBackupKey将其跳过以备份到iCloud。

所以我的问题是,在存储PDF时是否可以NSURLIsExcludedFromBackupKey,因此Apple不会再拒绝它?

1 个答案:

答案 0 :(得分:1)

我曾因同样的原因拒绝了应用程序。排除下载的文件后,它被批准。要设置该属性,我使用以下方法:

// We do not want to backup this file to iCloud
+ (BOOL)addSkipBackupAttributeToItemAtURL:(NSURL *)URL {
    const char* filePath = [[URL path] fileSystemRepresentation];
    const char* attrName = "com.apple.MobileBackup";
    if (&NSURLIsExcludedFromBackupKey == nil) {
        // iOS 5.0.1 and lower
        u_int8_t attrValue = 1;
        int result = setxattr(filePath, attrName, &attrValue, sizeof(attrValue), 0, 0);
        return result == 0;
    } else {
        // First try and remove the extended attribute if it is present
        int result = getxattr(filePath, attrName, NULL, sizeof(u_int8_t), 0, 0);
        if (result != -1) {
            // The attribute exists, we need to remove it
            int removeResult = removexattr(filePath, attrName, 0);
            if (removeResult == 0) {
                NSLog(@"Removed extended attribute on file %@", URL);
            }
        }

        // Set the new key
        return [URL setResourceValue:[NSNumber numberWithBool:YES] forKey:NSURLIsExcludedFromBackupKey error:nil];
    }
}

您提到使用缓存是没有选项,因为您无法控制文件是否保留在缓存中。您可以使用自定义缓存来解决这个问题。如果您想查看样本,请查看:https://github.com/evermeer/EVURLCache