保護 iTunes 備份中的資料

如果我們希望保護我們的應用資料免受 iTunes 備份的侵害,我們必須跳過在 iTunes 中備份我們的應用資料。
每當在 macOS 上使用 iTunes 備份 iOS 裝置時,所有應用程式儲存的所有資料都將複製到該備份中並儲存在備份計算機上。

但我們可以使用 URLResourceKey.isExcludedFromBackupKey 鍵從此備份中排除我們的應用資料。
以下是我們的應用程式的目錄結構: 注意: 通常敏感資料儲存在應用程式支援目錄中。 StackOverflow 文件


例如,如果我們要排除儲存在 Application Support 目錄中的所有資料,那麼我們可以使用上面提到的金鑰如下:

    let urls = FileManager.default.urls(for: .applicationSupportDirectory, in: .userDomainMask)
    let baseURL = urls[urls.count-1];
    
    let bundleIdentifier = Bundle.main.object(forInfoDictionaryKey: "CFBundleIdentifier") as! String
    let pathURL = baseURL.appendingPathComponent(bundleIdentifier)
    let persistentStoreDirectoryPath = pathURL.path
    if !FileManager.default.fileExists(atPath: persistentStoreDirectoryPath) {
        do {
            try FileManager.default.createDirectory(atPath: path, withIntermediateDirectories: true, attributes: nil)  
        }catch {
            //handle error
        }
    }
    let dirURL = URL.init(fileURLWithPath: persistentStoreDirectoryPath, isDirectory: true)
    do {
        try (dirURL as NSURL).setResourceValue((true), forKey: .isExcludedFromBackupKey)
    } catch {
        //handle error
    }

有許多工具可用於檢視所有備份資料的 iTunes 備份,以確認上述方法是否有效。
iExplorer 非常適合探索 iTunes 備份。