应用有一些文件需要永久的存储在本地使应用支持离线功能。但是这些文件并不包含用户数据,无需备份。如何防止这些文件被备份。

在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目录中的数据。所以如果数据被删除的话应用将需要重新解压出这些数据。

如何防止文件被备份到iCloud 和iTunes?相关推荐

  1. iOS如何防止文件被备份到iCloud 和iTunes?

    应用有一些文件需要永久的存储在本地使应用支持离线功能.但是这些文件并不包含用户数据,无需备份.如何防止这些文件被备份. 在iOS上,应用负责确保只有用户数据而不包含应用数据被备份到iCloud和iTu ...

  2. iOS怎么防止文件被Icloud或者iTunes备份

    最近上传App被苹果拒了,原因很普遍,因为把不该同步到iCloud的东西同步了,简言之:我把下载的视频放在沙盒下的Documents目录下.其实之前是知道错了,真是明知山有虎偏向虎山行.自找的.人品不 ...

  3. ios备份备忘录到android,如何将iPhone备忘录备份到iCloud?

    如果想将iPhone上的备忘录同步到其他注册了相同apple ID的Apple设备上,或者担心备忘录意外丢失,可以开启并使用iCloud备忘录功能. 打开iCloud备忘录: 1.转到iPhone设置 ...

  4. Windows 10如何使用文件历史记录备份个人文件

    [引自Winclient的博客]与先前版本的 Windows 一样,Windows 10 中也自带了"文件历史记录"功能.该功能旨在帮助用户方便地挂接外部磁盘.网络驱动器来实现对个 ...

  5. 把服务器文件备份到文件服务器,服务器之间文件备份方案、如何把服务器文件自动备份到另外一台服务器?...

    很多单位都有文件服务器备份的需求,并且常常是把一个服务器的文件自动备份到另外一台文件服务器 .如何实现呢? 一.Windows文件服务器自动备份的方法 Windows文件服务器自动备份的最简单方法是安 ...

  6. window连接不上linux ftp_Linux文件自动备份方案

    欢迎大家一起学习交流 正在跳转​jq.qq.com 需求场景:将云上一台Linux服务器文件备份到本地服务器,一周一备即可. 面对这样一个需求,我们可能面临如下一些问题. 1.备份方式:是云服务器推文 ...

  7. window如何传文件到mac_如何将Mac桌面和文档文件夹同步到iCloud

    是否想确保您始终可以访问重要文件?这是将两个关键的macOS目录同步到iCloud的方法. 是否在寻找一种释放Mac上存储空间的方法?也许您想了解如何从其他设备访问Mac文档?您可以通过将Mac上的D ...

  8. SQL Server 大数据搬迁之文件组备份还原实战

    SQL Server 大数据搬迁之文件组备份还原实战 原文:SQL Server 大数据搬迁之文件组备份还原实战 一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景( ...

  9. linux日志文件备份,linux配置文件、日志文件全备份

    linux配置文件.日志文件全备份 1.分别设置两台主机满足试验要求服务器IP主机名 nginx-web服务器192.168.10.150web1 备份服务器192.168.10.20backup 要 ...

最新文章

  1. 开发日记-20190506 关键词 汇编语言(五)Hello World!
  2. boost的chrono模块最小时间点的测试程序
  3. CentOS6.4x64_安装Qt5
  4. 【Elasticsearch】技术专栏 | 利用HDFS备份实现Elasticsearch容灾
  5. linux 搭建日志服务器
  6. java对象的序列化和反序列化_Java对对象的序列化和反序列化详解
  7. Python入门必备五本书籍,精华满满,直击重心
  8. 数据库数据迁移的3种方案学习
  9. ArcEngine代码 两规冲突检测
  10. 品质担当,有效提升办公生产力,永艺XY人体工学椅开箱实测
  11. Gitea 的简单介绍
  12. 工具使用分享之爱思助手安装苹果APP
  13. 计算机组成原理---第二章运算器和运算方法
  14. mysql 查询不等于空的数据查询
  15. 技嘉显卡性能测试软件,性能测试成绩总结_技嘉 GA-G1.Sniper B5_主板评测-中关村在线...
  16. 移动物联网应用典型案例福建8项目入选,四信携手产业共赢
  17. hdu 6217 BBP Formula
  18. 全球经济放水之下,数字货币牛市夭折?
  19. Android集成阿里消息推送
  20. c++软件开发面试旋极面试题_c++开发程序员面试拼多多面试题整理(含答案)

热门文章

  1. 自定义字段的设计与实现(Java实用版)
  2. IDea汉化后主题更换。
  3. 一张图搞清楚防抖和节流的区别
  4. hle机器人_英雄联盟:LCK春季赛重组T1对阵HLE,曾经的神真的“老”了
  5. flutter笔记4:使用material原生控件开发一个APP
  6. cad拉伸怎么用_三维绘图:203页的CAD三维绘图基础知识,提高绘图效率全靠它
  7. 元宇宙购物已成为行业新风口
  8. 据说,他是中国有钱人中最快乐的那一个
  9. MySQL Group Replication 学习(部署篇)
  10. 【API接口工具】postman-Workspaces工作空间 VS Scratch Pad草稿面板