Подписки с CKShare
Я новичок в подписках и Cloudkit, и я пытаюсь настроить подписки для отправки push-уведомлений, когда записи CKShare создаются, редактируются, удаляются, а также когда участник покидает общий ресурс как для частной, так и для общей базы данных.
В моем приложении у меня есть два типа записей в Cloudkit. Первый Deck
и второй Card
, Deck
имеет one-to-many
отношения с Card
, каждый Card
держит CKReference
к его Deck
, Я заметил, что на панели инструментов Cloudkit есть третий тип записи с именем cloudkit.share
, Из моего исследования я считаю, что мне нужно четыре подписки здесь. По одному для Deck
а также Card
в частной базе данных, используя CKQuerySubscription
и по одному для каждого Deck
а также Card
в общей базе данных, когда пользователь принимает общий ресурс, используя CKDatabaseSubscription
, Нужно ли будет также создать еще одну подписку на каждую базу данных для типа записи cloudkit.share
а на общую сумму 6 подписок?
Спасибо
0 ответов
После настройки одного CKDatabaseSubscription
в обеих общих и частных базах данных любые изменения будут вызывать метод AppDelegate:
-(void)application:(NSApplication *)application didReceiveRemoteNotification:(nonnull NSDictionary<NSString *,id> *)userInfo
Общая база данных немного сложнее, так как вы не можете запросить зону по умолчанию. Вам нужно будет установить начальный CKFetchDatabaseChangesOperation
с помощью setRecordZoneWithIDChangedBlock:^(CKRecordZoneID * _Nonnull zoneID)
получить общую запись zoneID. При этом вы можете запрашивать все общие записи так же, как и частную базу данных.
Не забудьте удалить подписки из CloudKitDashboard при тестировании, так как подписки останутся и сработают, даже если они будут удалены из вашего кода.