Общедоступная база данных CloudKit - синхронизация устаревших записей
Я использую CloudKit Public
база данных для синхронизации данных между устройствами. Я синхронизируюCKRecord
s, которые поставляются с опцией локального сохранения (Realm). Я не используюNSPersistentCloudKitContainer
.
Поскольку я использую Public
база данных, это (как я понимаю) означает:
- Я не могу получить изменения записей в зоне, потому что это работает только в
Private
база данных. - Однако я могу создать
CKQuerySubscription
s и получать уведомления оCKRecord
изменения.
Проблема, с которой я сталкиваюсь, - это знать, как получить CKRecord
изменяется, когда мое приложение пропускает фоновое уведомление от CloudKit.
Представьте, что пользователь садится в самолет, а его ноутбук на некоторое время выключен. Если кто-то другой изменит запись в течение этого времени, пользователь в самолете пропустит уведомление, и теперь на его устройстве будет устаревшая версия записи.
Как я могу это согласовать?
Единственное, что я могу придумать, это:
- Периодически получать все записи из
Public
база данных сCKQueryOperation
. - Сравните
CKRecord
s к локальным данным на устройстве. - Обновите устаревшие данные с помощью данных CloudKit.
Есть ли лучший способ добиться этого с помощью CloudKit?