问题标签 [cloudkit-sharing]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
1026 浏览

cloudkit - CloudKit CKShare userDidAcceptCloudKitShareWith 在 Mac 应用上从不触发

我正在努力CKShare在 Swift 4 的 macOS 应用程序中接受 a。我已经完成了以下所有操作:

  • 创建CKShare并将其保存rootRecord到 CloudKit
  • 添加参与者 ( CKShare.Participant)
  • 我已经确认它CKShare在 CloudKit 服务器上,并且我邀请的人可以访问它。这是截图:https ://d.pr/i/0sMFQq

当我单击与 关联的共享链接时CKShare,它会打开我的应用程序,但没有任何反应并且userDidAcceptCloudKitShareWith不会触发。

我必须在 info.plist 中包含某种 URL 方案吗?或者也许是我需要在我的NSApplicationDelegate代表中遵守的协议?对于我的一生,我无法弄清楚该怎么做。提前致谢!

更新

我已经尝试了更多的东西。当我在网络浏览器中打开共享链接时,我看到:

在此处输入图像描述

单击“确定”会使屏幕逐渐消失:

没有什么

不是特别有帮助。:) 这样做之后,参与者在 CloudKit 中的状态仍然是Invited,所以共享仍然没有被接受。

当我单击消息中的共享链接时,我会看到如下弹出窗口: CloudKit 分享弹窗 单击打开后,我的应用程序的新副本出现在 Dock 中,然后应用程序突然关闭。崩溃日志指出:

由于未捕获的异常“CKException”而终止应用程序,原因:“应用程序缺少必需的权利 com.apple.developer.icloud-services”

我尝试在 Xcode 的 Capabilities 部分中关闭再打开 iCloud,但没有任何变化。我知道这个例外是不对的,因为我可以正常启动我的应用程序并整天使用 CloudKit。只有CKShare导致此崩溃的原因。

这是一团糟。救救我,欧比旺克诺比,你是我唯一的希望。

0 投票
1 回答
477 浏览

cloudkit - CloudKit CKShare URL 无处可去

我已成功将CKShareURL 保存到 CloudKit,并且可以看到用户INVITED在 CloudKit 仪表板中。我的 Mac 应用程序通过电子邮件将 URL 发送给那个人,但是当他们单击它时,他们在 icloud.com 上的这个屏幕上看到的都是:

共享

单击“确定”会使所有内容消失,因此您所看到的只是网页上的背景。

我的理解是 URL 应该打开我的 Mac 应用程序,它将userDidAcceptCloudKitShareWith在我的应用程序委托中触发。但它什么也没做。

这可能是因为我的应用程序正在开发中,而不是在 Mac App Store 中吗?我是否需要自定义 URL 方案才能打开我的应用程序?

关于这些东西的文档非常稀少。我希望有人可以提供任何帮助。

0 投票
0 回答
572 浏览

cloudkit - 邀请 CKShare 并在没有 UICloudSharingController 且不发送 URL 链接的情况下接受 CKShare

假设我正在Root <-> Child申请(即Manager <-> Employee)。

SayManager具有预定义的电子邮件并已授予userDiscoverability应用程序权限(通过CKContainer.requestApplicationPermission)。

启动应用程序时Employee,初始化序列会自动创建CKRecord(即用于时间跟踪的员工记录),并CKShare静默邀请ManagerCKShare

为了实现这一点,我使用CKContainer.discoverUserIdentity, then CKContainer.fetchShareParticipant, thenCKModifyRecordsOperation来保存CKRecordCKShare

在我的私有数据库中初始化流程后,Employee我的记录类型cloudkit.share有 2 个参与者,Employee它本身和Manager. 的接受状态ManagerINVITED。我也有保存后得到的 URL 链接CKShare

现在Manager我想默默地接受CKShare邀请以访问Employee记录(即时间跟踪)。


如何静默接受 CKShare邀请,无需通过电子邮件、Messages.app 发送 URL 链接,无需使用 UICloudSharingController 等?

是否可以纯粹以编程方式、静默地使用 CloudKit 仅从一侧共享CKShare并在另一侧接受它?

谢谢!

0 投票
1 回答
1006 浏览

ios - 如何为我的 CloudKit 数据建模

在我的应用程序中,我决定使用 CloudKit 作为我的同步后端。我的应用程序不是关于项目的,但为了简单起见,让我们这么说......

所以......在我的应用程序中,用户将有多个项目。其中每一个都包含与该项目关联的多个实体。比如任务,还有提醒等等。

所有这些数据都将存储在用户私有数据库中。公共数据库中不会有任何内容。

现在一个用户可以有多个项目。

我的第一个问题:每个项目都应该在它自己的 CKRecordZone 中吗?我没有看到这样做的好处?!?有人可以向我解释拥有多个记录区的好处是什么吗?所以目前所有的项目都在一个区域。

接下来,我希望用户能够与其他人共享他的所有数据。当前的问题是,由于项目当前是我数据库中的根记录,我需要为每个项目创建一个共享,对吗?!?在我的应用程序中,单独邀请用户加入每个项目并没有什么意义,所以我想以某种方式将其存档。创建一个将项目作为子项的新根记录然后用户邀请某人加入这个新根记录是否有意义?

最后一个问题......有没有像 Sack-Team 这样的人来询问有关 CloudKit 的问题?似乎比在 stackoverflow 上开始一个新问题更容易,因为我的问题非常具体到我的应用程序......

0 投票
1 回答
436 浏览

cloudkit - 如果所有者从 CloudKit 上的 CKShare 中删除我,如何通知我

假设记录的所有者与我共享它。我收到了一个分享链接,我打开它并接受这样的分享:

我之前也订阅了共享数据库,如下所示:

但是现在假设该记录的所有者CKShare 删除了我作为该记录的参与者并将更新的参与者列表保存到 CloudKit。

据我所知,我得到的唯一通知是另一个共享数据库订阅 ( subscriptionSharedDatabase) 更改,但没有更改或删除任何记录(我查看并获取它们时没有更改的记录)。

据我所知,通知参与者更改的唯一方法CKShare是订阅cloudkit.share记录类型的通知,但这在共享数据库中对我不可用,对吗?

当我从 中删除时如何通知我CKShare

0 投票
2 回答
903 浏览

ios - 如何获取已存在共享的 CKShare 对象(获取共享 URL)

我试图让我的应用程序的用户能够检索到他们已经共享的记录的 iCloud 共享链接。在创建共享时,我可以使用let share = CKShare(rootRecord: CKRecord)Apple 的UISharingController. 但是,每次我使用这种方法时,旧链接都会失效,并将其他人踢出他们已经加入的共享。如何允许用户(记录所有者)随时获取记录CKShare对象的可共享 URL?

0 投票
1 回答
626 浏览

ios - 无法使用 CloudKit 获取 sharedCloudDatabase 自定义区域中的记录

我正在尝试从共享数据库中的自定义区域获取 CloudKit 记录。

在共享过程中已正确创建区域。所以我假设该区域是正确的共享自定义区域(它确实在我的 CloudKit 用户仪表板中,出现在默认容器的 sharedDatabase 下)。

即使使用这段简单的代码来检索记录:

我不断收到此错误:(抱歉在上一篇文章中遗漏了!)

关于我缺少什么的任何想法?谢谢!

0 投票
0 回答
73 浏览

cloudkit - iOS:Cloudkit 链接在 iOS13 中不起作用

我在 iOS 上的 CloudKit 实现中使用 Collaborate。当我与其他用户共享数据时,其他用户可以单击电子邮件中的链接并直接通过 Apple Mail 应用程序打开它,但如果用户尝试复制链接并在浏览器中打开它或通过基本上打开的 Gmail 打开它浏览器中的链接,它甚至在没有打开我的应用程序的情况下在浏览器中引发此错误 - “iCloud 已停止响应”。

我开始在 iOS 13 中遇到这个问题,它在 iOS 12 中运行良好。

请让我知道是否还有其他人面临此问题或是否有解决此问题的方法。

在此处输入图像描述

谢谢。

0 投票
0 回答
56 浏览

ios13 - 关闭 UICloudSharingController 时出现错误消息

当 UICloudSharingController 被解除时,我收到以下错误消息:

我不知道这是什么意思。有没有人遇到过类似的事情?

0 投票
2 回答
160 浏览

ios - CoreData + CloudKit 但不共享

CoreData 非常棒。它使使用 SQLite DB 编码持久存储变得非常可预测。

CloudKit 非常棒。它使在 iCloud 中编写持久存储变得容易,并且可以在用户的​​设备之间共享。

CoreData + CloudKit 非常棒,因为它带来了本地数据存储和设备之间共享的优势。

现在, Apple 在使用 CoreData + CloudKit 时不支持用户之间的 CloudKit 共享这一事实让我感到完全愚蠢和惊讶。 每次我提出这个问题,人们都会看着我,为什么有人要这个?我很困惑。有没有理由不想利用本地+云同步的可共享存储组合?

如果有人可以帮助我理解为什么这不存在或者为什么我不想设计将本地持久性与云同步以及在用户之间共享这些对象的能力相结合的存储,那将是非常有用的?