Управление подписками CKQuerySubscription

Я хотел бы представить использование CloudKit в приложении, которое я разрабатываю. В качестве первого шага я бы использовал его для обработки push-уведомлений, когда определенные записи вставляются в общедоступную базу данных. Поэтому в своем приложении я бы создал CKQuerySubscription для каждого типа записи, который я хотел бы отслеживать.

Мой вопрос: какова лучшая стратегия для продления этих подписок? Во время тестирования я заметил, что мой контейнер для разработки несколько раз перепутался, и мне пришлось сбросить его, чтобы подписки вели себя должным образом. Apple ничего не указывает в документации, так когда же предполагается удалить существующую подписку и создать ее заново? Поскольку со временем информация об уведомлениях для подписки может измениться, я подумал о том, чтобы заново создавать все подписки каждый раз, когда номер сборки отличается. Является ли это хорошим подходом, чтобы не испортить производственную версию контейнера?


person user3075898    schedule 07.03.2018    source источник
comment
Вас будет интересовать подмножество данных, и у вас будет некоторый предикат, соответствующий вашим интересам. Обычно вы не создаете подписку, которая уже создана, если вы не хотите изменить предикат, тогда вам нужно удалить и создать заново.   -  person user1046037    schedule 08.03.2018
comment
При создании подписки сохраняется тот факт, что она создана локально в приложении. Таким образом, вы будете проверять этот флаг при открытии и создавать, только если он еще не создан. Проблема, с которой вы могли столкнуться, заключается в том, что вы могли попытаться создать уже созданную подписку.   -  person user1046037    schedule 08.03.2018


Ответы (2)


В моем сценарии я добавил проверку при запуске, чтобы получить все подписки и проверить наличие ожидаемых подписок. Таким образом, я могу сбрасывать, менять контейнеры или даже иметь дело с исчезающими субмаринами (я не видел, чтобы субмарины исчезали, но если это произойдет, я могу изящно восстановиться).

Это также даст вам место для обновления подписок, если ваши уведомления должны измениться. Извлеките их все, затем очистите/замените по мере необходимости.

При таком подходе вам не нужно постоянно перестраивать сабвуферы. Вы будете обновляться только тогда, когда они отсутствуют, или вы обновляете свою логику проверки, чтобы искать другие подписки.

person Thunk    schedule 08.03.2018

Рекомендуемая стратегия: во-первых, создавать настраиваемые зоны записи, а во-вторых, подписываться на изменения в базе данных.

Лучшим ресурсом, чтобы узнать об этом, является сеанс WWDC 2016 CloudKit Best Pratices. .

person Adolfo    schedule 08.03.2018