Tag: cloudkit

CK分享一步一步

共享CloudKit项目的指南 CKSharing是在WWDC 2016上引入的,它是他们的两个开发者演示的主要部分:CloudKit最佳实践和CloudKit的新功能。 通常,当有人说我需要在进行编码项目之前观看WWDC视频时,我通常会之以鼻,但这绝对是对的。 您确实必须观看这两个视频,才能对正在发生的事情有基本的了解。 而且,CloudKit 共享可能是我见过的Apple发布的Tentpole库中记录最少的主要功能。 写这篇文章几乎是公民的责任,这样其他人就不会像我所做的那样挣扎。 缺乏文档的原因之一是,我不认为CloudKit被开发人员经常使用。 与我交谈的大多数开发人员朋友都非常忙于使用JSON解析自定义后端,Firebase等…,以至于不介意最新和最出色的CloudKit产品是什么。 他们的损失! 该项目: 我从事应用程序开发已经有几年了(无论是打开还是关闭,大部分时间都是关闭的),可以帮助我追踪员工的工作时间。 这个概念很简单:有一个Manager ,他们有一个向他/她报告工作时间的Employee 。 允许员工自己添加,编辑,删除工时,并且经理在任何情况下都会收到通知。 然后,该应用将所有这些时间加起来,以便可以计算出工资单。 您可以想象,可以轻松地从这样的结构中构建其他功能,例如创建工资单,计算预扣税等。我们将只关注共享时间部分。 CloudKit结构: 由于一个经理可以有多个员工,因此我们在架构中需要一个Employee CKRecord类型。 它将包含名称,地址,工资率等…作为值。 这些小时将由我也在架构中创建的WorkEvent CKRecord表示。 每个WorkEvent都有一个startTime,endTime,注释等…以及对Employee的引用。 现在我们只需要一个放置这些记录的地方。 公共数据库:在这里存储您希望每个人都可以访问的内容。 公共数据库中没有自定义区域,默认区域中所有内容都存在。 我们的数据(上述)显然是这两个方的私有数据,因此使用公共数据库是不可以的。 可以通过密钥共享来公开进行操作,但是基本上是通过模糊处理来实现安全性,这不理想。 私有数据库:您可以在其中存储不想让公众看到的记录 。 专用数据库具有默认区域,用户可以创建自定义区域。 重要提示 :将您要共享的任何内容放在私有数据库的自定义区域中。 对于此应用程序,管理中心将使用他/她的私有数据库来存储该应用程序的所有记录。 我们将为每个员工创建一个自定义区域,其中将有一个Employee CKRecord和许多WorkEvent CKRecords。 经理将订阅其私有数据库中的更改。 共享数据库:此数据库包含您已被授予访问权限的“对象的窗口”。 您在共享数据库中看到的记录存在于其他人的私有数据库中。 您只是有一个进入该对象的窗口 。 换句话说,您是共享数据库中项目的“贡献者”,而不是所有者。 对于此应用程序,员工将通过共享数据库访问其WorkEvents和Employee CKRecords。 他们将订阅共享数据库中的更改。 Manager的共享数据库中将没有任何区域,因为该信息位于其私有数据库中。 了解这一点非常重要。 注意:不要让术语“共享区域”绊倒您。 没有CKRecordZone这样的东西,您可以将记录放到与其他用户自动共享的地方。 共享区域只是为您创建的用于访问和添加共享记录的区域,但是它本身不会导致对象被共享,这将在以后进行介绍。 这将是什么样的: […]

iOS — xx:CloudKit Configurando o Projeto

Crie o projeto evána ABA功能。 Habilite o CloudKit 其他功能•CloudKit•XCode自动执行•推送通知,与订阅一样,可以进行CloudKit实用的推送通知。 准则容器 Um containerécomo uma caixa onde todos os dados dosusuáriosvãoser armazenados。 在容器中,可以在容器中使用不同的应用程序,也可以在容器中使用各种应用程序。 由padrão,quando或CloudKitéhabilitado no projeto组成,或由XCode cria um容器com或bundle identifier组成的app。 Um app pode acessarvários容器与众不同。 集装箱运输代表公司由CKContainer Acessando o containerpadrão 容器的默认参数或方法default()执行CKContainer: 让容器= CKContainer.default() 数据库 数据库和应用程序注册数据库。 操作系统注册CKDatabase。 OS容器在CloudKit的数据库中进行操作: 私人数据库 Somente dispositivos autenticados na conta do iCloud pode ter acesso aos registros […]

查询CloudKit中的视频数组,下载并存储在Documents目录中-iOS的Swift 3教程

从CloudKit下载视频非常简单,但是我需要查看多个资源并弄清楚如何修复几个错误才能使所有这些工作正常进行。 本教程假定您具有CloudKit知识和使用documentDirectory的知识。 如果您不熟悉CloudKit,请查看此Ray Wenderlich教程。 这就是我用来学习基础知识的东西。 我们将在本教程中做什么 有一系列我们要下载的视频名称。 检查是否有任何下载 创建一个查询,该查询将发送未下载的视频数组 查询Cloudkit以查找我们需要的记录 下载视频并将其存储在文档中 我假设您已经知道如何设置CloudKit并上传了视频。 步骤1:设定 这是我将在本教程中使用的视频名称的数组。 您将需要更改项目以匹配您在CloudKit中存储的名称。 在您的ViewController中: 让arrayOfVideoNames = [“ Apple”,“ Banana”,“ Cantalope”] 步骤2:获取文档目录的内容 创建一个新文件。 该文件将包含一个名为DocumentsDirectoryFunctions的结构,该结构将具有与documentsDirectory相关的所有功能。 此结构的主要目的是获取documentDirectory的内容,以便我们可以将其与arrayOfVideoNames进行比较。 fileManager和getDocumentsDirectoryPath被标记​​为私有,因为我们不需要在结构外部使用它们。 如果需要,只需删除“私有”即可。 struct DocumentsDirectoryFunctions { 私人让fileManager = FileManager.default 私有函数getDocumentsDirectoryPath()->字符串{ 让directoryPaths = fileManager.urls(用于:.documentDirectory,在:.userDomainMask中) 让docsDirectory = directoryPaths [0] .path 返回docsDirectory } func getContentsOfDocumentsDirectory()-> [String] { var tempArray:[字串] = [] 做{ 让filelist […]

一便便💩

使用Cloudkit,以及在iOS和Swift中进行本地化 因此,我的最新应用程序在8个月内就淘汰了8个应用程序(现在我最多有6个应用程序,其中3个贴纸包为1个,所以我提前了)。 我想要通过这些应用实现的部分工作是学习新知识。 到目前为止,我的冒险经历是我使用Photos和HealthKit以及其他我以前不曾使用过的组件。 对于下一个应用程序,我决定看一下CloudKit。 跨设备同步总是给开发人员带来痛苦,尤其是当您不想创造糟糕的体验并且用户期望这些东西能够正常工作时。 我最新的应用程序非常简单。 尽管我和我的朋友都长大了,但我们仍然有愚蠢的一面。 有时候,我们可能会为年轻时的歌曲键入歌词,或者只是发送表情符号。 为此,我构建了“一堆便便”,这是一种创建单个字符或整个短语(如合唱)重复的简单方法。 第一个版本现已发布,但我已经开始着手进行下一个更新,即cloudkit集成。 我不确定它会多么复杂,但实际上非常简单。 通过开发门户网站创建容器后,创建记录很简单,就像创建对象和调用保存方法一样。 与典型的关系数据库不同,不需要预先定义“方案”。 当创建“ recordType”的对象时(从关系的角度来说,这可以是您想要称为“表”的任何对象)。 然后保存对象会自动创建架构。 您可以在Container仪表板中定义不同的索引,但是会为您创建一个唯一的ID。 让容器= CKContainer(标识符:AppConstants.containerIdentifier) 让db = container.privateCloudDatabase let record = CKRecord(recordType:“ MyRecordType”) record [“ text”] =“某些文本”作为CKRecordValue db.save(record,completeHandler:{记录,错误 如果让err =错误{ // print(err) } }) 您可以访问3种类型的容器来保存数据。 公共-公共容器正好在罐头上写着。 上市。 使用您的应用的任何人都可以访问任何记录。 苹果免费提供大量空间。 私有–私有容器对用户是私有的,并且使用他们自己的iCloud存储空间。 即使作为应用程序的开发人员,您也无法查看他人的私人记录,只能查看您自己的记录。 这是一件好事! 这表明苹果非常重视隐私。 共享–共享容器再次非常明显。 它们基本上是私有容器,用户可以在其中允许其联系人的特定子集查看和编辑相同的数据。 一个简单的例子可能是同一家庭成员之间共享的待办事项清单。 检索记录也非常容易。 基本上,您可以定义要检索的recordTypes并调用适当的方法。 实际上,它是如此简单,我不知道为什么我没有更早开始使用它。 我正在认真考虑重新访问一些较旧的应用程序并集成Cloudkit。 […]

完整CoreData上传(备份)到iCloud驱动器,并在需要时进行恢复

我的项目是基于CoreData的应用程序。 上传sqlite文件到CloudDrive是否足以在需要时恢复数据? 有没有教程如何实现它?

UPDATE通知的替代方法无效

更新通知停止工作。 你有什么解决方法,直到苹果计算出什么东西? CKFetchNotificationChangesOperation有时不会返回UPDATE,DELETE通知 CloudKit推送通知logging更新停止工作 https://forums.developer.apple.com/thread/7288 我的快速修复,在每一分钟,当用户触发UIRefreshControl ,然后我下载自上次更新后修改的所有logging。 有用。 但是,我有一个更好的主意,好奇,你怎么看。 任何缺点。 我想添加一个Change表到数据库。 它将有一个recordName , recordType , changeType字段。 changeType可以insert , update , deletestring值。 (或相应的int枚举) 而且我会用CKSubscription创build和观察Change表。 总是当一个logging被创build,更新,删除一个自定义表中,我会做两件事,做这个动作,作为第二个动作,我会在Change表中创build一个“日志条目” 。 因为它是Change的Insert操作,并且插入通知似乎正常工作,所有设备都会收到通知。 他们可以下载有关的logging。 你看到有什么缺点吗?

从CloudKitlogging中selectcreationDate

我试图用标题和副标题来填充单元格。 标题与字段和细节与CreationDate从logging。 我正在尝试以下,但我得到一个没有成员'ObjectForKey' var objects = CKRecord override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { let reuseIdentifier = "Cell" var cell:UITableViewCell? = tableView.dequeueReusableCellWithIdentifier(reuseIdentifier) as UITableViewCell? if (cell != nil) { cell = UITableViewCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier: reuseIdentifier) } let object = objects[indexPath.row] cell!.textLabel!.text = object.objectForKey("Notes") as? String cell!.detailTextLabel?.text = object.creationDate.objectForKey("Notes") as? String return cell! […]

Cloudkit突然无法上传,因为“无法获得签名证书”

就在今天,当我尝试将CKAsset上传到cloudkit时,我返回了错误 <CKError 0x155128f0:“内部错误”(1/4000); “无法获得签名证书”> 这是以前完美的工作,并没有抛出这个错误。 有谁知道为什么会发生这种情况,或者如果这是苹果方面的问题?

如何在CloudKit中取消用户发现权限?

我很好奇,用户可以以某种方式改变发现权限。 我在“设置”中找不到方法。

将CKAsset保存到CloudKit中的CKRecord会产生错误:“没有收到资产的authToken”

当我尝试将CKAsset保存到CKAsset时,这是完整的错误消息。 我以前没有看到过这个错误,也不能在任何地方find任何有关它的信息。 有没有人听说过这个? <CKError 0x17064ccf0: "Partial Failure" (2/1011); "Failed to modify some records"; partial errors: { 4B1CD9BE-3B67-49C5-AC39-F8379A5041C9:(_defaultZone:__defaultOwner__) = <CKError 0x174451a90: "Internal Error" (1/1000); "No authToken received for asset"> AC51EFE8-E370-4286-9510-B86B24855BE8:(_defaultZone:__defaultOwner__) = <CKError 0x174451880: "Internal Error" (1/1000); "No authToken received for asset"> D52322DA-2E13-46EF-B58F-9B74D97CE876:(_defaultZone:__defaultOwner__) = <CKError 0x174451430: "Internal Error" (1/1000); "No authToken received for asset"> }>