保护 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 备份。