0

我是订阅和 Cloudkit 的新手,我正在尝试设置订阅,以便在创建、编辑、删除 CKShare 记录以及参与者离开私有和共享数据库的共享时发送推送通知。

在我的应用程序中,我在 Cloudkit 中有两种记录类型。第一个是Deck,第二个是CardDeck与 有one-to-many关系Card。每个人都Card持有CKReference一个Deck。我注意到 Cloudkit 仪表板中有第三种记录类型,名为cloudkit.share. 根据我的研究,我相信我在这里需要四个订阅。当用户使用. _ Deck_ Card_ 我是否还需要在每个数据库上为记录类型创建另一个订阅,总共六个订阅?CKQuerySubscriptionDeckCardCKDatabaseSubscriptioncloudkit.share

谢谢

4

1 回答 1

0

CKDatabaseSubscription在共享和私有数据库上都设置了一个后,任何更改都将触发 AppDelegate 方法:

-(void)application:(NSApplication *)application didReceiveRemoteNotification:(nonnull NSDictionary<NSString *,id> *)userInfo

共享数据库稍微复杂一点,因为您无法查询默认区域。您需要设置一个初始CKFetchDatabaseChangesOperationusingsetRecordZoneWithIDChangedBlock:^(CKRecordZoneID * _Nonnull zoneID)来获取共享记录zoneID。有了这个,您可以像私有数据库一样查询所有共享记录。

测试时不要忘记从 CloudKitDashboard 中删除订阅,因为订阅将保留并触发,即使从您的代码中删除也是如此。

于 2019-02-27T17:00:20.500 回答