0

如何在不将信息存储在 iCloud 上的情况下下载文件?

我的应用程序是用于将 pdf 下载到机器的应用程序。它被Apple拒绝,原因是“特别是,我们发现下载两个问题后,您的应用程序存储了56.5 MB。要检查您的应用程序存储了多少数据: - 转到设置> iCloud。> 存储和备份> 管理贮存 ”。如果信息未存储在 iClound 上,我想知道如何编写。

我的脚本:

- (void) DownloadFile:(NSURL *)url Name:(NSString *)name Folder:(NSString *)folder{

    NSFileManager *fileManager = [NSFileManager defaultManager];
    NSData *myData = [NSData dataWithContentsOfURL:url];
    NSString *file = [NSString stringWithFormat:@"%@/%@",folder,name];

    if(![fileManger fileExistsAtPath:file]){
        [fileManger createFileAtPath:file contents:myData attributes:nil];
    }
}
4

2 回答 2

0

只需将 PDF 存储在应用程序文档目录中即可。您仍然可以使用 iCloud 的键值存储来跟踪哪些文件已下载到哪些设备上。但是,要下载到设备上的文件必须来自非 iCloud 服务器。

您可能还必须实现一个 UI 来显示哪些文件已下载,哪些文件可用,并在需要时从设备中删除它们。

于 2012-06-08T09:00:19.030 回答
0

哦 谢谢 完成了

#import <sys/xattr.h>
....

-(BOOL) addSkipBackupAttributeToItemAtURL:(NSURL *)URL{
     if(&NSURLIsExcludeFromBackupKey == nil){
         const char* filePath = [[URL path] fileSystemRepresentation];
         const char* attrName = "com.apple.MobileBackup";
         u_int8_t attrValue = 1;
         int result = setxattr(filePath, attrName, &attrValue, sizeof(attrValue), 0, 0);
         return result == 0;
     }else{
         return [URL setResourceValue:[NSNumber numberWithBool:YES] forKey:NSURLIsExcludedFromBackupKey error:nil];
     }
} 

- (void) DownloadFile:(NSURL *)url Name:(NSString *)name Folder:(NSString *)folder{

    NSFileManager *fileManager = [NSFileManager defaultManager];
    NSURL *curfile = [NSURL fileURLWithPath:folder];
    [self addSkipBackupAttributeToItemAtURL:curfile];
    NSData *myData = [NSData dataWithContentsOfURL:url];
    NSString *file = [NSString stringWithFormat:@"%@/%@",folder,name];

    if(![fileManger fileExistsAtPath:file]){
        [fileManger createFileAtPath:file contents:myData attributes:nil];
    }
}

谢谢

于 2012-06-09T05:38:38.803 回答