Я использую CloudKit в своем приложении для iOS.
В моем приложении всякий раз, когда пользователь изменяет некоторые данные, я обновляю частную базу данных CloudKit, чтобы другие устройства пользователя также могли получать обновления.
Этот механизм синхронизации может быть включен / отключен пользователем.
Когда пользователь включает синхронизацию, я создаю подписку и отправляю локальные данные в CloudKit.
Если пользователь вошел в систему на других устройствах, он начинает получать удаленные уведомления об изменениях в частной базе данных, как и ожидалось.
Приложение показывает UISwitch
для пользователя, чтобы включить / отключить синхронизацию.
Предположим, что у пользователя есть 2 устройства DeviceA
и DeviceB
, которые показывают, что синхронизация включена, установив для UISwitch.isOn
значение true.
Если пользователь отключает синхронизацию на DeviceA
, подписка удаляется, а изменения, сделанные на DeviceA
, не вызывают удаленных уведомлений на DeviceB
, как ожидалось.
Но DeviceB
по-прежнему показывает, что синхронизация включена.
Есть ли способ узнать, когда была удалена подписка?
Я знаю о CKFetchSubscriptionsOperation
. Я могу периодически звонить по номеру CKFetchSubscriptionsOperation
, чтобы узнать о подписках. Есть ли лучший способ для этого?.