私は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に表示されないことを禁止するにはどうすればよいですか?
回答ありがとうございます。