iCloud及CloudKit Dashboard运用

iCloud 简介

  • 苹果公司提供的云端服务,2011年正式发布
  • 为苹果用户提供私有云空间,方便用户在不同设备共享个人数据
  • 将音乐服务、系统备份、文件传输、笔记本和平板设备等各种产品有机结合在一起。
  • 个人免费5GB
  • Apple id 和 iCloud 账号是相互独立的,iCloud 账号可以通过Apple id登录,需要激活

CloudKit

  • Store structured app and user data in iCloud containers that can be shared by all users of your app.(官方文档API说明
  • 基于iCloud的一个云端数据存储服务
  • 组成:
    • 一个web页面,用于管理公开数据的记录类型
    • 一组API接口,用于iCloud和设备之间的数据传递

开始使用 CloudKit

开启CloudKit

XCode 配置

配置证书

找到当前的App ID然后对它进行编辑 打开iCloud的功能选择,并且选择Include CloudKit support,这边这时会有一个警告出现,选择右边的Edit进行编辑

进入Dashboard

两种进入方式:

  • XCode Capabilities 里直接点CloudKit Dashboard进入   
  • 从苹果开发者网站进入

CloudKit Dashboard

 

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 主要是管理开发者团队权限的

新增模型:

 

存储数据的类型: 

  • NSData (single bytes)  
  • NSDate (date and time)  
  • NSNumber (both Int and Double)  
  • NSString (or String in Swift)  
  • NSArray (list)  
  • CKReference (used to create relationships between objects)  
  • CLLocation (location)  
  • CKAsset (file)

查询模型数据:

回到Default Zone,中间蓝色区域的右上角的名称旁有个倒三角,这里可以选择使用(查询)哪个模型下的数据:

 

保存图片字段选Asset类:

 

API使用

引入CloudKit.framework:                         

#import <CloudKit/CloudKit.h>

判断 iCloud 功能是否开启:

使用NSFileManager 的 URLForUbiquityContainerIdentifier方法

 

iCloud 容器路径

iCloud 容器和你 App 文件沙盒, 在 iOS 文件系统中其实是分别存放在两个不同的地方的:

  • iCloud 文件路径格式 file:///private/var/mobile/Library/Mobile%20Documents/iCloud~com~xxx~aaa/Documents
  • App 沙盒文件路径格式 file:///var/mobile/Containers/Data/Application/3B4376B3-89B5-3342-8057-3450D4224518/Documents/

操作数据

  • 添加记录
  • 保存图片
  • 通过recordID 查找单条记录
  • 查询多条记录
  • 更新记录
  • 删除记录
  • 订阅推送

注:以上操作可以在demo中查看

CloudKit 基础对象类型

CKContainer:

Containers 就像应用运行的沙盒一样,一个应用只能访问自己沙盒中的内容而不能访问其他应用的。Containers 就是最外层容器,每个应用有且仅有一个属于自己的 container。(经过开发者授权配置 CloudKit Dashboard 之后,一个应用也可以访问其他应用的 container。)

CKDatabase:

Database 即数据库,私有数据库用来存储敏感信息,比如说用户的性别年龄等,用户只能访问自己的私有数据库。应用也有一个公开的数据库来存储公共信息

CKRecord:

即数据库中的一条数据记录。CloudKit 使用 record 通过 k/v 结构来存储结构化数据。关于键值存储,目前值的架构支持 NSString、NSNumber、NSData、NSDate、CLLocation,和 CKReference、CKAsset 以及存储以上数据类型的数组。

CKRecordZone:

Record 不是以零散的方式存在于 database 之中的,它们位于 record zones 里。每个应用都有一个 default record zone,你也可以有自定义的 record zone。

CKAsset:

即资源文件,例如二进制文件。

使用 NSOperation 的依赖来管理互相依赖的任务

CKFetchRecordsOperation *firstFetch = ...;
CKFetchRecordsOperation *secondFetch = ...;
[secondFetch addDependency:firstFetch];

NSOperationQueue *queue = [[NSOperationQueue alloc] init];
[queue addOperations:[firstFetch, secondFetch] waitUntilFinished: NO];

 

总结

  1. 使用简单,适用独立开发者或者小团队
  2. 局限性:依赖苹果的账号系统
  3. 可以持久保存部分文件,即使App卸载
  4. 其他平台:网站集成CloudKit JS、CloudKit web service 对CloudKit服务进行HTTP请求

 

进阶和补充

TODO:研究UIDocument相关API,文件备份

 

参考资料:

iOS项目iCloud及CloudKit Dashboard运用 http://www.cocoachina.com/ios/20161205/18285.html

CloudKit使用教程 http://www.jianshu.com/p/e2733b8d203f

使用 iCloud API 的正确姿势 http://www.cocoachina.com/ios/20160817/17382.html

iCloud开发入门 和一个demo:http://blog.csdn.net/swallow_baby/article/details/52494844

一个demo:iOS5新特性:iCloud代码示例(有图有马有注释才厚道) http://www.cocoachina.com/bbs/read.php?tid-77337.htm

http://www.cocoachina.com/ios/20111008/3322.html

一个同步,crash问题研究 http://www.cocoachina.com/bbs/read.php?tid=197917

NSPredicate http://nshipster.cn/nspredicate/

 

Demo

https://github.com/ychexingwuji/DM_iCloud

 

转载于:https://my.oschina.net/u/859523/blog/848371

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值