1

私はiOSアプリケーションを開発しています。ユーザーは書籍をダウンロードできます。書籍のサイズは ar > 200 Mo です。Apple のストレージ ガイドラインを尊重するために、次のようにしています。

 + (NSString *)booksStoragePath
    {

        NSArray *path = [NSArray array];
        NSString *os5 = @"5.0";
        NSString *currSysVer = [[UIDevice currentDevice] systemVersion];

        if ([currSysVer compare:os5 options:NSNumericSearch] == NSOrderedDescending) //5.0.1 and above
        {        
            path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 

        }
        else // IOS 5
        {
            path = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES); 
        }

       NSString *documentsDirectory = [path objectAtIndex:0]; // Get documents directory
        NSString *storagePath = [documentsDirectory stringByAppendingPathComponent:@"Books"];

        if (![[NSFileManager defaultManager] fileExistsAtPath:storagePath])
            [[NSFileManager defaultManager] createDirectoryAtPath:storagePath withIntermediateDirectories:YES attributes:nil error:nil];

NSUrl *url = [NSUrl urlWithString:storagePath];
[self addSkipBackupAttributeToItemAtURL:url];

        return storagePath;
    }

そして、「Books」ディレクトリをバックアップしないために、私は次のようにしています:

#pragma mark --
#pragma mark Data Backup
- (BOOL)addSkipBackupAttributeToItemAtURL:(NSURL *)URL
{
    NSString *os5 = @"5.0.1";
    NSString *currSysVer = [[UIDevice currentDevice] systemVersion];


    if ([currSysVer compare:os5 options:NSNumericSearch] == NSOrderedSame) //5.0.1
    {    
        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{
        if ([currSysVer compare:os5 options:NSNumericSearch] == NSOrderedDescending) {



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

    return nil;

}

問題は、iTunes 接続で「Books」フォルダが表示され、それをダウンロードでき、本のすべてのコンテンツがそこにあることです!!!!!

ディレクトリ「Books」とそのコンテンツがiCloudと同期されず、iTunesに表示されないことを禁止するにはどうすればよいですか?

回答ありがとうございます。

4

0 に答える 0