У меня есть приложение, для которого я хочу добавить возможность резервного копирования данных в iCloud с помощью CloudKit. «Резервное копирование», похоже, работает правильно (мои записи находятся в частной базе данных, поскольку они ... ну, частные).
Теперь я хотел бы использовать CKSubscriptions, чтобы все мои устройства синхронизировались с одними и теми же данными. Я попытался реализовать 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!")
}
})
}
До сих пор мне не удавалось отправить уведомление на свое устройство.
Я знаю, что вы можете создать подписку по зонам. Зоны находятся в частной БД, поэтому я предполагаю, что подписки CKS могут работать в частной БД. Но я не хотел реализовывать зоны (в противном случае они мне не нужны).
Вопрос: есть ли проблема с CKSubscriptions в частной БД на основе запроса?