iCloud存储的API

原文: http://blog.csdn.net/wilmer_wu/article/details/6968812

对开发者而言,涉及iCloud存储的功能主要有两个,一是iCloud document storage,利用iCloud存储用户文件,比如保存一些用户在使用应用时生成的文件,如数据库文件等;二是iCloud key-value data storage,利用iCloud存储键值对,主要是保存一些程序的设置信息,一般只允许存储几十K大小,我估计iBooks的书签同步等功能用的就是这种方式。

要注意iCloud的自动备份功能,如果用户在iOS5中打开了此功能,那么iClound会对用户的应用程序自动进行备份,作为开发人员,我们要注意文件存放目录的问题。因为应用主目录下的Document目录和Library目录(除了该目录下的Caches)的文件都会被自动的备份到iCloud,因此,可以把较大的临时文件或随时可以重建的文件放在Library\Caches目录下,就可以帮用户节省iCloud空间,提供用户体验。另外,相信大家都关心,应用存放在iCloud上如何保证安全呢,不用的应用保存的数据是否能够有效隔离?这一点,iCloud引入了iOS下sandbox的概念,即每一个应用在iCloud上都有一个sandbox,访问的范围就被限制在这里面,从而保证数据安全和隔离。


但是,iOS5还有一个机制值得注意,就是在设备容量空间不足的情况下,系统会自动清除高速缓存文件或临时目录的内容,当然,Library\Caches目录下的内容就会被清除掉,所以对开发人员来说是一个两难的选择。但从这种机制来看,apple是希望应用尽量在本地减少存储,但对中国的网络条件来说,完全依赖网络的应用应当还不太成熟。但对开发人员来说,在读取Library\Caches目录下的文件的时候,至少应当先做一个判断,看看文件在不在,以免引起程序崩溃。


还要注意的是,如果我们开发人员已经在使用了上述两种iCloud API对某些文件进行存储了,这些文件是不会自动备份到iCloud中的。

补充:

ios 5.0.1版将提供一个新的功能,可对一个文件设定一个属性,告诉系统即使在低存储的情况下,对这个文件也不会进行删除,这样的文件在用户备份到iCloud或iTunes的时候也不会被备份,所以需要开发人员手动进行管理。此外,设定了这种属性的文件无论放在哪一个目录下都可以保持上述特性。


实现代码如下:


#include <sys/xattr.h>
- (void) AddSkipBackupAttributeToFile: (NSURL*) url
{
u_int8_t b = 1;
setxattr([[url path] fileSystemRepresentation], "com.apple.MobileBackup", &b, 1, 0, 0);
}


参考 : http://stackoverflow.com/questions/8209755/iphone-move-resources-to-application-bundle
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值