Общедоступная база данных CloudKit - синхронизация устаревших записей

Я использую CloudKit Publicбаза данных для синхронизации данных между устройствами. Я синхронизируюCKRecords, которые поставляются с опцией локального сохранения (Realm). Я не используюNSPersistentCloudKitContainer.

Поскольку я использую Public база данных, это (как я понимаю) означает:

  • Я не могу получить изменения записей в зоне, потому что это работает только в Private база данных.
  • Однако я могу создатьCKQuerySubscriptions и получать уведомления о CKRecord изменения.

Проблема, с которой я сталкиваюсь, - это знать, как получить CKRecord изменяется, когда мое приложение пропускает фоновое уведомление от CloudKit.

Представьте, что пользователь садится в самолет, а его ноутбук на некоторое время выключен. Если кто-то другой изменит запись в течение этого времени, пользователь в самолете пропустит уведомление, и теперь на его устройстве будет устаревшая версия записи.

Как я могу это согласовать?

Единственное, что я могу придумать, это:

  1. Периодически получать все записи изPublic база данных с CKQueryOperation.
  2. Сравните CKRecords к локальным данным на устройстве.
  3. Обновите устаревшие данные с помощью данных CloudKit.

Есть ли лучший способ добиться этого с помощью CloudKit?

0 ответов

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