iOS开发-iCloud的简单使用(1)-配置iCloud环境以及key-value storage的使用

苹果最近发出消息说iCloud服务要转到国内来了,正好趁着这个机会研究一下iCloud到底要怎么用。

现在各大互联网厂商都会提供一点云端服务,苹果也不例外,iCloud就是苹果的云端服务,用户可以在这里备份通讯录、邮件、照片、音乐等等iOS原生系统中的数据,并且可以在各个苹果设备之间无缝连接,虽然苹果在iOS5(好像是)发布的时候大吹特吹了一把iCloud,但是后来的使用过程中好像iCloud是各种坑爹。不过随着技术的提升,最近iCloud也变得越来越好,对开发者的支持也是越来越方便了。

配置iCloud

配置iCloud,首先你就先要有一个真实的苹果开发者账号,没错,就是一年688的那个。开通了之后,在Xcode中新建一个项目。然后在 TARGETS -> Capabilities -> iCloud中打开开关就可以了。

就像这样,是不是很简单啊。

logo

诶,可是好像有什么地方不对,有些地方爆红了。

这是因为我们还没有给这个App ID 注册,所以接下来我们去苹果的 开发者官网 添加一个App ID,在添加的时候勾选 iCloud 服务就可以啦。

logo

什么?你说你已经创建过App ID了???没关系,在管理App ID这边选择 Edit,然后在勾选iCloud也是一样的。

logo

这时候回到Xcode中在看一下,应该就已经没有爆红了吧。

什么???还有爆红??? 那你重启一下XCode试试吧。再不行,你重启一下电脑试试好了。

Key-value storage

在Xcode中 iCloud下边一共有三个可以勾选的服务,其中第一个就是key-value storage,这个也是最简单的iCloud使用方法了,他跟NSUserDefaults的使用方法基本一样,都是以键值对的方式存储数据。只不过处理iCloud的类为NSUbiquitousKeyValueStore

存储数据

存储数据的方式很简单,只要使用 setObject:forkey:之后,使用synchronize同步一下就可以了。

1
2
3
NSUbiquitousKeyValueStore *keyValueStore = [NSUbiquitousKeyValueStore defaultStore];
[keyValueStore setObject:@"test message" forKey:@"test"];
[keyValueStore synchronize];

获取数据

获取数据的方式也一样,是要使用 objectForKey就可以了。

1
2
3
NSUbiquitousKeyValueStore *keyValueStore = [NSUbiquitousKeyValueStore defaultStore];
NSString *testString = [keyValueStore objectForKey:@"test"];
NSLog(@"%@",testString);

数据改变通知

看一下NSUbiquitousKeyValueStore的头文件,我们发现他还有一个通知消息

1
FOUNDATION_EXPORT NSNotificationName const NSUbiquitousKeyValueStoreDidChangeExternallyNotification API_AVAILABLE(macos(10.7), ios(5.0), watchos(2.0), tvos(9.0));

注册这个通知,就可以在数据修改的时候接收到通知,然后做对应的处理。最好的验证方法就是在存储了数据之后直接删除掉这个app,然后再次安装,这个时候就会触发该通知。

1
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(storeDidChange:) name:NSUbiquitousKeyValueStoreDidChangeExternallyNotification object:[NSUbiquitousKeyValueStore defaultStore]];
1
2
3
4
- (void)storeDidChange:(NSUbiquitousKeyValueStore *)defaultStore
{
NSLog(@"%@",defaultStore);
}

Demo

先放一下demo的地址

logo

以上就是关于配置iCloud和key-value存储的简单使用,后边我们再看看其他两种服务是怎么样使用的。