我不熟悉订阅和云工具包,我正在尝试设置订阅,以便在创建、编辑、删除CKShare记录时发送推送通知,以及当参与者离开私有数据库和共享数据库的共享时发送推送通知。
在我的应用程序中,Cloudkit中有两种记录类型。第一个是Deck,第二个是Card。Deck与Card之间存在one-to-many关系。每个Card都有一个指向其Deck的CKReference。我注意到在Cloudkit仪表板中有第三种记录类型,名为cloudkit.share。根据我的研究,我相信我这里需要四个订阅。当用户接受使用CKQuerySubscription的共享时,私有数据库上的Deck和Card各一个使用CKQuerySubscription,共享数据库上的Deck和Card各一个。我是否还需要在每个数据库上为记录类型cloudkit.share创建另一个订阅,总共六个订阅?
谢谢
发布于 2019-02-28 01:00:21
在共享和专用数据库上设置单个CKDatabaseSubscription后,任何更改都将触发AppDelegate方法:
-(void)application:(NSApplication *)application didReceiveRemoteNotification:(nonnull NSDictionary<NSString *,id> *)userInfo共享数据库有点复杂,因为您不能查询默认区域。您需要使用setRecordZoneWithIDChangedBlock:^(CKRecordZoneID * _Nonnull zoneID)设置一个初始CKFetchDatabaseChangesOperation,以获取zoneID的共享记录。这样,您就可以像查询私有数据库一样查询所有共享记录。
在测试时,不要忘记从CloudKitDashboard中删除订阅,因为订阅将保留并触发,即使从代码中删除也是如此。
https://stackoverflow.com/questions/48516410
复制相似问题