CloudKit是苹果最新推出的基于iCloud的一个云端数据存储服务.其主要由下面两部分组成:
1. 一个仪表web页面,用于管理公开数据的记录类型.
2. 一组API接口,用于iCloud和设备之间的数据传递.
由于笔者也是初步接触iCloud云存储数据,花了一些时间学习了一下,网上能参考的资料不多,很多地方有理解不透彻,或者不对的,还请包涵!如果你有更好的参考文档或者博客介绍,还请留言告知,不胜感激!!!
这篇文章主要介绍第一个知识点,在Xcode中开启iCloud云服务,和仪表web页面的一些介绍及操作...
一. Xcode启用iCloud
首先,新建项目后,要确保你的Apple ID是一个有效的开发者账号;并在General -->Identity 下的Team选项,选择你的开发者账号,必须是有效的开发者账号才能启用iCloud服务,并确保你的Bundle Identifier是唯一的;
然后,设置权限和容器,选择Capabilities-->启用iCloud,如下图所示:
如果之前没有选择开发者账号的话,这时,可能需要你登陆开发者账号;
最后,勾选CloudKit,这时Containers下的选项就可点了,选择Use default container:
如果有错误提示,一般点击Fix issue 之后,Xcode会帮我们修复;
二. 关于 CloudKit Dashboard
1. 点击上图中的 CloudKit Dashboard,或者这里,可以进入网页的仪表盘的主界面:
2. 下面,介绍一下这个界面:
SCHEMA :
CloudKit容器的高级类:Record Types, Security Roles, 和Subscription Types,其中主要使用的是Record Types;
一个Record Type用来定义一个单独的记录(可以理解为一个数据模型),相当于存储数据的模板,和数据库的表结构类似;
PUBLIC DATA 和 PRIVATE DATA 就是你保存数据的地方,开发者可以查看所有的共享数据,但是只能看到自己的私密数据,无法看到用户的私密数据;这里没有显示PRIBATE DATA,其结果和PUBLIC DATA是一样的;
User Records: 记录一些当前使用者的信息;
Default Zone :这里可以查看数据的详细信息,也是后面主要使用的;
ADMIN:
Team :主要是管理开发者团队权限的,这里不做过多介绍;
API Access : 主要是用来添加一些授权信息,例如:创建 API Token .添加 Server-to-Server Key等;
Deployment :配置开发环境,就是设置当前是开发环境,还是生产环境;如果当前是开发环境,可以重置开发环境的数据及设置,也可以切换到生产环境;
3. 手动添加Record Type :
这个数据模型可以在这里手动设置,也可使用程序保存到iCloud时自动生成,程序中设置了哪些属性,这里就会显示哪些;
下面介绍一下手动设置:
切回Record Type选项,点击右边栏的左上角的+,新增一个模型:
输入模型名称: 默认只有一个StringField的属性(这里暂且这么称呼吧),可以点击下面的Add Field... 新增属性列表;
同样可以选择属性的类型,如下图:
设置完成后,点击右下角的 Save按钮即可保存!这样,一个模型就建立好了...
4. 添加一条数据:
切换回PUBLIC DATA 选项下的 Default Zone ,可能是这样的:
点击 Add Record ID Query Index ,会显示如下界面:
这是一个空的存储器,还没有保存任何数据;
点击右边栏左上角的+ ,或者右边栏中间的New Record ,即可新建一条数据;
这时会发现,其数据结构和刚刚创建的模型一致,填写相应的数据即可:
然后,点击右下角的保存,即可生成一条记录:
当然,生成之后的记录,也是可以修改的...
数据模型(即Record Type)可能会不止一种,本示例中我设置了两种,一个名称为test,一个名称为Note,切换回Record Type可查看另一个模型:
那么,怎么知道Default Zone里选择的是哪个模型呢?
回到Default Zone,中间蓝色区域的右上角的名称旁有个倒三角,这里可以选择使用(查询)哪个模型下的数据:
这里只有两个模型...
细心的会发现,在Record Type中的Note模型下有一行小字:1 Public Record ,1 Private Record,意思是:使用模型Note的有一条公共数据,一条隐私数据,由于我登陆的iCloud账号和开发者账号不一样,相当于是用户账号,所以这里是看不到那个隐私数据的.
5. Creating an API Token
选择左侧ADMIN分组下的API Access;
中间一列顶部的下拉列表选择API Tokens (还有一个是Server-to-Server Keys);
点击右边列左上角的+,或者Add API Token;
为你的Token起一个名字:
Sign In Callback :(可选的)指定一个回调方式:发送信息或者回调一个自定义网址;
Allowed Origins :(可选的)设置允许的域名
Discoverability :(可选)是否可见
Notes :(可选) 描述
以上信息填写完成后,点击右下角Save即可;这些信息创建完成后,也是可以修改的...
6. Creating Server-to-Server Key
首先,需要生成一个Server-toServer Certificate:
打开终端
执行指令之前最好先cd到一个你方便找到的目录(例如:桌面上的一个文件夹)
输入以下指令:
openssl ecparam -name prime256v1 -genkey -noout -out eckey.pem
接着输入以下指令,获取Public Key:
openssl ec -in eckey.pem -pubout
read EC key writing EC key -----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEpS3JYi6T4tsMYXpNW7PCuggasB3e SCdmOcdbzOYAvJJom+99W783MNLlSYKduMmYUi46TnaPpamDDiD8NCsFpQ== -----END PUBLIC KEY-----
最后,回到CloudKit Dashboard:
选择API Access-->Server-to-Server Keys;
点击+,或者 Add Server-to-Server Key,新建一个key:
Public Key:这里输入刚刚复制的public Key;
Notes : 描述
点击右下角的Save,即可完成...
这些操作都比较简单,在我们后面使用代码保存数据到iCloud时可以在这里查看保存的信息详情,当前只能查看公共的;
相关API使用,稍后推出...