2012-05-21 57 views
2

我制作和应用程序让人们下载内容,并且可以脱机访问它,它喜欢目录。但苹果拒绝它,因为它在iCloud烘烤我我正在做以下,但它似乎不工作。防止iCloud备份

Funciones.m

+ (BOOL)addSkipBackupAttributeToItemAtURL:(NSURL *)URL { 
    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; 
} 

Update.m

- (void)updateImg:(NSString *)tipo { 

    //tomamos el ultimo update 
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    NSTimeInterval time = [defaults doubleForKey:@"lastUpdate"]; 
    NSLog(@"%f", time); 

    CatalogoAppDelegate *app = [[UIApplication sharedApplication] delegate]; 

    NSString *post = [NSString stringWithFormat:@"lastUpdate=%f", time]; 
    NSData *postData = [post dataUsingEncoding:NSISOLatin1StringEncoding allowLossyConversion:NO]; 
    NSMutableURLRequest *urlRequest = [[[NSMutableURLRequest alloc] init] autorelease]; 
    NSString *url = [NSString stringWithFormat:@"%@iPhone/update%@Img.php", app.serverUrl, tipo]; 
    [urlRequest setURL:[NSURL URLWithString:url]]; 
    [urlRequest setHTTPMethod:@"POST"]; 
    [urlRequest setHTTPBody:postData]; 

    NSData *urlData; 
    NSURLResponse *response; 
    NSError *error; 
    urlData = [NSURLConnection sendSynchronousRequest:urlRequest returningResponse:&response error:&error]; 
    if(urlData) { 


     NSString *aStr = [[[NSString alloc] initWithData:urlData encoding:NSUTF8StringEncoding]autorelease]; 
     //NSLog(@"%@: %@", tipo, aStr); 
     NSArray *temp = [aStr componentsSeparatedByString:@";"]; 

     //Direccionl Local de la APP 
     NSString *docDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 

     for (int i=0; i<[temp count]; i++) { 

      NSString *tempImg = [NSString stringWithFormat:@"%@", [temp objectAtIndex:i]]; 
      //NSLog(@"%@", tempImg); 

      //pedimos cada url 
      NSURL *tempURL = [NSURL URLWithString:[NSString stringWithFormat:@"%@images/%@/%@", app.serverUrl, tipo, tempImg]]; 
      //[Funciones addSkipBackupAttributeToItemAtURL:tempURL]; 
      UIImage *image = [[UIImage alloc] initWithData:[NSData dataWithContentsOfURL:tempURL]]; 
      NSLog(@"%@images/%@/%@", app.serverUrl, tipo, tempImg); 
      NSString *pngFilePath = [NSString stringWithFormat:@"%@/%@", docDir, tempImg]; 
      NSData *data1 = [NSData dataWithData:UIImagePNGRepresentation(image)]; 
      [data1 writeToFile:pngFilePath atomically:YES]; 

      NSURL *backUrl = [NSURL fileURLWithPath:pngFilePath]; 
      [Funciones addSkipBackupAttributeToItemAtURL:backUrl]; 

     } 

    } 
    [self performSelectorInBackground:@selector(finUpdate) withObject:nil]; 
} 

任何想法,我做错了什么?

感谢

回答

2

setxattr提供指示成功或错误,以及错误苹果addSkipBackupAttributeToItemAtURL:方法检查结果,并将此信息反馈给你的代码。你的代码简单地忽略它。从确定它是否返回错误开始。

+0

嗨@Jim那个方法它返回True。我检查它提供的每一个网址。但我的问题是我需要在那部分或下载它之前添加哪部分? – Edig

+0

你确定吗?你提供的代码根本不检查返回值。 – Jim

+0

嗨@Jim不,我不检查它,但我调试它,它返回1 =真。但是你认为这个实现是否正确? – Edig