溫馨提示×

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

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

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

發(fā)布時(shí)間:2020-07-02 09:02:48 來(lái)源:網(wǎng)絡(luò) 閱讀:7620 作者:arthurchen 欄目:移動(dòng)開(kāi)發(fā)

應(yīng)用有一些文件需要永久的存儲(chǔ)在本地使應(yīng)用支持離線功能。但是這些文件并不包含用戶數(shù)據(jù),無(wú)需備份。如何防止這些文件被備份。

在iOS上,應(yīng)用負(fù)責(zé)確保只有用戶數(shù)據(jù)而不包含應(yīng)用數(shù)據(jù)被備份到iCloud和iTunes上。具體的步驟在不同的iOS 版本各有不同。所以對(duì)不同的版本進(jìn)行區(qū)分描述。關(guān)于具體哪些數(shù)據(jù)不應(yīng)該被備份,參見(jiàn)App Backup Best Practices section of the iOS App Programming Guide。

 

注意:應(yīng)用應(yīng)該避免將應(yīng)用數(shù)據(jù)和用戶數(shù)據(jù)和在相同的文件中。這樣會(huì)增加不必要的備份大小并且被認(rèn)為是違反iOS的數(shù)據(jù)存儲(chǔ)指南。

 

iOS 5.1 以及更新

 

從iOS 5.1開(kāi)始,應(yīng)用可以使用NSURLIsExcludedFromBackupKey 或 kCFURLIsExcludedFromBackupKey 文件屬性來(lái)防止文件被備份。這些API是通過(guò)通過(guò)舊的,棄用的方式的直接設(shè)置額外屬性。所有運(yùn)行在iOS5.1的都應(yīng)該使用這些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

如果你的應(yīng)用必須支持iOS 5.0.1,你可以使用下面的方式來(lái)設(shè)置“不要備份”的拓展屬性。當(dāng)你創(chuàng)建無(wú)須備份文件或者文件夾時(shí),將數(shù)據(jù)寫(xiě)入文件然后調(diào)用這個(gè)方法,傳入一個(gè)文件URL。

 

下面的這些代碼已經(jīng)被棄用并只應(yīng)該使用在iOS5.0.1及更早的版本上。當(dāng)運(yùn)行的iOS5.1上時(shí),應(yīng)用應(yīng)用使用NSURL和CFURL鍵來(lái)進(jìn)行描述。

在iOS 5.0.1上設(shè)置額外屬性

#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

無(wú)法在iOS5.0上防止數(shù)據(jù)被備份。如果你的應(yīng)用必須支持iOS5.0,然你需要保持你的應(yīng)用數(shù)據(jù)在Caches中來(lái)避免數(shù)據(jù)被備份。iOS將會(huì)在不需要的時(shí)候刪除Caches目錄中的數(shù)據(jù)。所以如果數(shù)據(jù)被刪除的話應(yīng)用將需要重新解壓出這些數(shù)據(jù)。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI