2012-08-08 2 views
2

내 첫 음악 다운로드 앱이 데이터 저장 가이드 라인의 일부 문제로 인해 거부되었습니다. NSDocumentDirectory 내 MP3 파일을 저장하려고했습니다. "Do not backup"플래그를 추가하여 앱을 다시 제출해야합니다. 여기 iOS 5.1 용 백업 플래그가 없습니까?

내 코드는

,

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 



    NSString *documentsDirectoryPath = [[paths objectAtIndex:0]stringByAppendingPathComponent:@"Music.mp3"]; 
    [receivedData writeToFile:documentsDirectoryPath atomically:YES]; 
    [self addSkipBackupAttributeToItemAtURL:downloadURL]; 



- (BOOL)addSkipBackupAttributeToItemAtURL:(NSURL *)URL1 
     { 
      if (&NSURLIsExcludedFromBackupKey == nil) { // iOS <= 5.0.1 
      const char* filePath = [[URL1 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 { // iOS >= 5.1 
        NSError *error = nil; 
        [URL1 setResourceValue:[NSNumber numberWithBool:YES] forKey:NSURLIsExcludedFromBackupKey error:&error]; 

        return error == nil; 
        NSLog(@"success"); 
       } 
     } 

것입니다 내 5.1 버전이 코드는 잘 작동? 조금 혼란스러운

답변

4

다음 코드를 참조하십시오.

How do I prevent files from being backed up to iCloud and iTunes?

iOS 5.1 and later

- (BOOL)addSkipBackupAttributeToItemAtURL:(NSURL *)URL 
{ 
    assert([[NSFileManager defaultManager] fileExistsAtPath: [URL path]]); 

    NSError *error = nil; 
    BOOL success = [URL setResourceValue: [NSNumber numberWithBool: YES] 
            forKey: NSURLIsExcludedFromBackupKey error: &error]; 
    if(!success){ 
     NSLog(@"Error excluding %@ from backup %@", [URL lastPathComponent], error); 
    } 
    return success; 
} 

in iOS 5.0.1

#import <sys/xattr.h> 
- (BOOL)addSkipBackupAttributeToItemAtURL:(NSURL *)URL 
{ 
    assert([[NSFileManager defaultManager] fileExistsAtPath: [URL path]]); 

    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; 
} 
+0

내 코드에 어떤 문제? –

+0

다음 사이트를 참조하십시오. [파일이 iCloud 및 iTunes에 백업되지 않도록하려면 어떻게합니까?] (http://developer.apple.com/library/ios/#qa/qa1719/_index.html) –