CloudKit подписки в частной базе данных

У меня есть приложение, для которого я хочу добавить возможность резервного копирования данных в iCloud с помощью CloudKit. Кажется, что "резервная" часть работает правильно (мои записи находятся в частной базе данных, так как они... ну, частные).

Теперь я хотел бы использовать подписки CKS для синхронизации всех моих устройств с одними и теми же данными. Я попытался реализовать CKSubscription для мониторинга создания / обновления / удаления записей на основе запроса (не на основе зон).

func subscribe() {

  let options = CKSubscriptionOptions.FiresOnRecordCreation |
  CKSubscriptionOptions.FiresOnRecordDeletion |
  CKSubscriptionOptions.FiresOnRecordUpdate


  let predicate = NSPredicate(value: true) // get all the records for a given type
  let subscription = CKSubscription(recordType: "Stocks",
  predicate: predicate, subscriptionID: subscriptionID,
  options: options)

  subscription.notificationInfo = CKNotificationInfo()
  subscription.notificationInfo.alertBody = ""

  db.saveSubscription(subscription, completionHandler: {
  subscription, error in
    if (error != nil) {
      println("error subscribing: \(error)")
    } else {
      println("subscribed!")
    }
  })
}

До сих пор мне не удавалось вызвать уведомление на моем устройстве.

Я знаю, что вы можете создать подписку на основе зон. Зоны находятся в частной БД, поэтому я предполагаю, что CKSubscription может работать в частной БД. Но я не хотел реализовывать зоны (которые мне не нужны в противном случае).

Вопрос: есть ли проблема с CKSubscription в частной БД на основе запроса?

1 ответ

Решение

Это должно работать. Не зональные подписки (подписки на основе запросов) поддерживаются в частных базах данных. Вы добавили код для получения уведомлений в AppDelegate?

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