CloudKit и CKSubscription
Я решаю очень странную проблему с CloudKit и push-уведомлениями, предоставляемыми Apple с CKSubscription.
Во-первых, все работает нормально, я могу получить CKNotification, он работал в течение нескольких дней, пока я не внес некоторые изменения в схему разработки, я просто добавил новое поле, ничего больше, ничего странного.
С этого момента я не могу получать CKNotifications. Я, конечно, уверен, что не допустил ошибок в коде, потому что не изменил его. Я только добавил новое поле в мою схему из Облачной панели.
Я единственный, кто решает эту проблему? Вы знаете, существует ли исправление?
Благодарю.
ОБНОВЛЕНИЕ: если поле "список", которое является CKReference, если установлено действие DeleteSelf, уведомление не сработает, если действие - Нет, уведомление сработает. Кстати мне нужен DeleteSelf.
1 ответ
РЕШИТЬ:
Ошибка состояла в том, что CKSubscription стрелял в пути:
let listReference = CKReference(recordID: r.recordID, action: CKReferenceAction.None)
let predicate = NSPredicate(format: "%K == %@", "list", listReference)
let itemsSubscription = CKSubscription(recordType: "Items", predicate: predicate, subscriptionID: "ITEMS", options: CKSubscriptionOptions.FiresOnRecordCreation | CKSubscriptionOptions.FiresOnRecordUpdate | CKSubscriptionOptions.FiresOnRecordDeletion)
но эталонное действие теперь DeleteSelf
так меняется на
let listReference = CKReference(recordID: r.recordID, action: CKReferenceAction.DeleteSelf)
сделает свое дело.
Сейчас работает нормально.