在一个应用程序中访问2个不同的cloudkit帐户

时间:2016-12-16 02:29:45

标签: swift cloudkit

我需要访问2个不同的cloudkit数据库,并将信息从一个复制到另一个(包括图像)。其中一个数据库是我的,另一个是我可以访问的朋友。我似乎无法弄清楚如何在一个应用程序中访问这两个,所以我可以从一个下载信息并将其上传到另一个。我可以一次做一个,但这对我没有好处。

以下代码可以访问其中一个容器,但如何切换到其他帐户以访问其他容器?

var container = CKContainer(identifier: "iCloud.com.lastname.firstname.MyAppName")
var publicDatabase: CKDatabase?
var currentRecord: CKRecord?
var publicDB = CKContainer.default().publicCloudDatabase

我应该使用手机应用程序执行此操作还是应该创建mac应用程序?

谢谢!

3 个答案:

答案 0 :(得分:1)

不允许应用从其他开发者访问其他应用的CloudKit容器。如果可能的话,这将是一个可怕的安全问题。

只有当两个容器来自同一个开发人员时,应用才能访问多个容器。

所以对你的问题的简短回答是,你想做的事情是不可能的(谢天谢地)。

答案 1 :(得分:1)

由于这两个应用来自不同的开发者帐户,因此无法访问彼此的容器。

如果您有权访问这两个开发者帐户,则有几种方法可以迁移数据:

  • 更新旧应用程序以将数据下载到本地存储(例如核心数据)。然后将数据文件复制到新应用程序并上传。
  • 在Mac上使用CloudKit JSCloudKit Web Services复制数据。
  • 单个应用可以在不同容器上使用CloudKit和CloudKit JS。

答案 2 :(得分:0)

Apple在2016年WWDC上宣布了共享数据库功能,请参阅此视频。

https://developer.apple.com/videos/play/wwdc2016/226/

共享云目录记录的详细信息大约在20分钟左右进入视频。简而言之,您可以与其他指定用户共享特定记录。我还没有使用新设施,但看起来很有希望。

你的另一个选择是使用像DropBox这样的东西;使用API​​创建要分享的图像的公共链接。

https://dropbox.github.io/SwiftyDropbox/api-docs/latest/

哪个更好;我不知道。使用我当前的应用程序,当涉及到小块数据时,它们是相同的。但是当谈到处理更大的块时,cloudKit中的资产就会说话。 DropBox似乎有我的优势[2016年12月],至少它更快,明显更快。