在我的应用程序中,我想通过iCloud与其他iCloud用户共享数据,但不是与全世界共享数据,而是与选定的其他iCloud用户共享数据。
我想到了一种可行的方式,但我不确定它是否会起作用,如果我忘记或误解了一些事情。
假设用户A希望能够与其他iCloud用户共享字符串,但不能与所有人共享。因此,用户A希望向用户B共享“Hello World”,但不向用户C而不是用户D。
所以我的应用程序有一个公共数据库和一个记录类型,每个人都一样。在该记录类型中,有一个String类型的字段,对每个人来说都是相同的。
现在用户A将记录“Hello World”保存到iCloud。这就是诀窍:我会在字符串中添加一个像UUID这样的唯一标识符,以便将“Hello World1230ABD6-3C61-1234-802E-D866F09AC012”等内容上传到iCloud。
现在用户A需要告诉用户他想要用他的UUID共享数据,因此用户A告诉用户B.现在用户A的UUID将作为谓词添加到用户B的CKSubscription。 / p>
这将允许用户B从用户A获取字符串,但是用户C或用户D不会收到CKNotification,因为他们的CKSubscription中没有用户A的UUID。
这会起作用吗?或者是否有其他设计模式允许通过iCloud与其他iCloud帐户共享/同步,但不是与所有人(公共)共享/同步?
P.S。我想要共享的数据不敏感,因此它不需要非常安全。数据对每个人(公共)都不感兴趣,因此只需要与选定的其他iCloud帐户共享...
我很感谢有关如何实现这一目标的任何想法或提示!
由于
答案 0 :(得分:12)
有几种方法可以实现这样的目标。在所有情况下,它归结为:
存储CKReference的位置和方式取决于您希望如何共享。
在所有情况下,解决方案都是安全的。这一切都归结为您在应用中定义的谓词。如果您的某个谓词过滤器不正确,那么可能会发生有人看到不适合他的内容。
在EVCloudKitDao的演示应用程序中,是一个基于CloudKit的聊天应用程序。它正在使用便利库EVCloudKitDao,但共享内容的结构将类似。
答案 1 :(得分:6)
CloudKit Sharing在WWDC 2016上推出。这允许在一组已知用户之间共享私人数据库记录,这听起来就像您正在寻找的那样。 ...... “CloudKit中的新功能”会话中有一个很好的概述:https://developer.apple.com/videos/play/wwdc2016/226/