苹果最近发出消息说iCloud服务要转到国内来了,正好趁着这个机会研究一下iCloud到底要怎么用。
现在各大互联网厂商都会提供一点云端服务,苹果也不例外,iCloud就是苹果的云端服务,用户可以在这里备份通讯录、邮件、照片、音乐等等iOS原生系统中的数据,并且可以在各个苹果设备之间无缝连接,虽然苹果在iOS5(好像是)发布的时候大吹特吹了一把iCloud,但是后来的使用过程中好像iCloud是各种坑爹。不过随着技术的提升,最近iCloud也变得越来越好,对开发者的支持也是越来越方便了。
配置iCloud
配置iCloud,首先你就先要有一个真实的苹果开发者账号,没错,就是一年688的那个。开通了之后,在Xcode中新建一个项目。然后在 TARGETS
-> Capabilities
-> iCloud
中打开开关就可以了。
就像这样,是不是很简单啊。
诶,可是好像有什么地方不对,有些地方爆红了。
这是因为我们还没有给这个App ID 注册,所以接下来我们去苹果的 开发者官网 添加一个App ID,在添加的时候勾选 iCloud
服务就可以啦。
什么?你说你已经创建过App ID了???没关系,在管理App ID这边选择 Edit
,然后在勾选iCloud
也是一样的。
这时候回到Xcode中在看一下,应该就已经没有爆红了吧。
什么???还有爆红??? 那你重启一下XCode试试吧。再不行,你重启一下电脑试试好了。
Key-value storage
在Xcode中 iCloud
下边一共有三个可以勾选的服务,其中第一个就是key-value storage
,这个也是最简单的iCloud
使用方法了,他跟NSUserDefaults
的使用方法基本一样,都是以键值对的方式存储数据。只不过处理iCloud的类为NSUbiquitousKeyValueStore
。
存储数据
存储数据的方式很简单,只要使用 setObject:forkey:
之后,使用synchronize
同步一下就可以了。
NSUbiquitousKeyValueStore *keyValueStore = [NSUbiquitousKeyValueStore defaultStore];
[keyValueStore setObject:@"test message" forKey:@"test"];
[keyValueStore synchronize];
获取数据
获取数据的方式也一样,是要使用 objectForKey
就可以了。
NSUbiquitousKeyValueStore *keyValueStore = [NSUbiquitousKeyValueStore defaultStore];
NSString *testString = [keyValueStore objectForKey:@"test"];
NSLog(@"%@",testString);
数据改变通知
看一下NSUbiquitousKeyValueStore
的头文件,我们发现他还有一个通知消息
FOUNDATION_EXPORT NSNotificationName const NSUbiquitousKeyValueStoreDidChangeExternallyNotification API_AVAILABLE(macos(10.7), ios(5.0), watchos(2.0), tvos(9.0));
注册这个通知,就可以在数据修改的时候接收到通知,然后做对应的处理。最好的验证方法就是在存储了数据之后直接删除掉这个app,然后再次安装,这个时候就会触发该通知。
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(storeDidChange:) name:NSUbiquitousKeyValueStoreDidChangeExternallyNotification object:[NSUbiquitousKeyValueStore defaultStore]];
- (void)storeDidChange:(NSUbiquitousKeyValueStore *)defaultStore
{
NSLog(@"%@",defaultStore);
}
Demo
先放一下demo的[地址。
以上就是关于配置iCloud和key-value存储的简单使用,后边我们再看看其他两种服务是怎么样使用的。