Подписки с 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 при тестировании, так как подписки останутся и сработают, даже если они будут удалены из вашего кода.

Другие вопросы по тегам