将CloudKit应用程序的价值传递给其他用户

时间:2014-10-10 20:56:31

标签: objective-c xcode sharing cloudkit

我是CloudKit的新手,刚刚从Developer Library分析CloudKitAtlas。 我创建应用程序,我希望"分享"数据到同一个应用程序的另一个用户。

我在私有数据库中有CKContainer,用户将所有创建的词典放在其中。现在我想让他有可能将他的部分数据分享给另一个用户(创建public containerWithIdentifier)。我知道可以检查地址簿中的每个电子邮件地址,并获得安装了该应用程序的结果。因此,用户可以选择谁能够查看他的数据。

问题是如何告诉其他用户应用"在我的共享数据上查看CKContainer" :)

任何人都已经做过这样的事了吗?

2 个答案:

答案 0 :(得分:1)

您可以使用容器discoverAllContactUserInfosWithCompletionHandler方法列出您的地图集中已安装该应用的所有用户。它将返回一个数组,您可以从中获取recordID。如果要与其中一个用户共享内容,请创建一个记录,将该ID放在to字段中。在启动应用程序时,您将创建一个带有谓词的订阅,该谓词查找该TO字段并将其与您自己的用户recordId进行比较。因此,如果使用您的ID在TO字段中创建记录,那么您将收到通知。无论您要发送给其他用户的是什么,都必须位于公共数据库中。我正在做这样的事情。代码可以在https://github.com/evermeer/EVCloudKitDao(正在进行中)

找到

答案 1 :(得分:0)

检查CloudKit框架中的CKContainer.h,他们通过电子邮件地址发现联系人中的人。如果联系人中的电子邮件地址不是登录apple id(或icloud帐户?)的电子邮件地址,我猜它无法匹配。

typedef NS_OPTIONS(NSUInteger, CKApplicationPermissions) {
    /* Allows the user's record in CloudKit to be discoverable via the user's email address */
    CKApplicationPermissionUserDiscoverability         = 1 << 0,
} NS_AVAILABLE(10_10, 8_0);