溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何防止文件被備份到iCloud 和iTunes?

發布時間:2020-07-02 09:02:48 來源:網絡 閱讀:7650 作者:arthurchen 欄目:移動開發

應用有一些文件需要永久的存儲在本地使應用支持離線功能。但是這些文件并不包含用戶數據,無需備份。如何防止這些文件被備份。

在iOS上,應用負責確保只有用戶數據而不包含應用數據被備份到iCloud和iTunes上。具體的步驟在不同的iOS 版本各有不同。所以對不同的版本進行區分描述。關于具體哪些數據不應該被備份,參見App Backup Best Practices section of the iOS App Programming Guide。

 

注意:應用應該避免將應用數據和用戶數據和在相同的文件中。這樣會增加不必要的備份大小并且被認為是違反iOS的數據存儲指南。

 

iOS 5.1 以及更新

 

從iOS 5.1開始,應用可以使用NSURLIsExcludedFromBackupKey 或 kCFURLIsExcludedFromBackupKey 文件屬性來防止文件被備份。這些API是通過通過舊的,棄用的方式的直接設置額外屬性。所有運行在iOS5.1的都應該使用這些API包防止文件被備份。

在iOS5 .1上防止文件被備份

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

 

iOS 5.0.1

如果你的應用必須支持iOS 5.0.1,你可以使用下面的方式來設置“不要備份”的拓展屬性。當你創建無須備份文件或者文件夾時,將數據寫入文件然后調用這個方法,傳入一個文件URL。

 

下面的這些代碼已經被棄用并只應該使用在iOS5.0.1及更早的版本上。當運行的iOS5.1上時,應用應用使用NSURL和CFURL鍵來進行描述。

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

 

iOS 5.0

無法在iOS5.0上防止數據被備份。如果你的應用必須支持iOS5.0,然你需要保持你的應用數據在Caches中來避免數據被備份。iOS將會在不需要的時候刪除Caches目錄中的數據。所以如果數據被刪除的話應用將需要重新解壓出這些數據。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女