1. 程式人生 > >iPhone開發:如何阻止檔案被iTunes和iCloud同步 How do I prevent files from being backed up to iCloud and iTunes?

iPhone開發:如何阻止檔案被iTunes和iCloud同步 How do I prevent files from being backed up to iCloud and iTunes?

先閱讀官方說明: 使用方法: #import “sys/xattr.h”

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

- (void)addSkipBackupAttributeToPath:(NSString*)path {
u_int8_t b = 1;
setxattr([path fileSystemRepresentation], “com.apple.MobileBackup”, &b, 1, 0, 0);
}

對資料夾的path使用這兩個方法中的任意一個,就可以使該目錄和該目錄包含的所有檔案和資料夾不被icloud和itunes同步了! 對於資料的同步與否的設計規則 詳細看上面的官方說明連結。 注意:setxattr在iOS 5.0.1之前的系統裡不會起作用的,(但是那些系統也沒有iCloud只有iTunes^.^)。經測試發現雖然不會起作用,但呼叫該函式也不會引起空指標錯誤。  這是一項挺有意思的技術:新系統里加入了原先系統裡沒有的func,在原先的系統裡呼叫,居然沒有nullpoint錯誤。 莫非這函式地址早就存在,預留好了後面把功能掛上? 奇怪了。
另外補充一下,對這個特性的測試要有耐心,因為icloud識別應用程式裡要同步的資料量大小顯示要等幾秒(菊花。。), 參考文件:apple官方文件,