В моем AppDelegate, когда я получаю удаленное уведомление, я отправляю уведомление
let ckqn = CKQueryNotification(fromRemoteNotificationDictionary: userInfo as! [String:NSObject])
let notification = NSNotification(
name: NSNotification.Name(CloudKitNotifications.NotificationReceived),
object: self,
userInfo: [CloudKitNotifications.NotificationKey:ckqn]
)
NotificationCenter.default.post(notification as Notification)
В моем контроллере у меня есть этот код:
private var cloudKitObserverContact: NSObjectProtocol?
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
cloudKitObserverContact = NotificationCenter.default.addObserver(
forName: NSNotification.Name(CloudKitNotifications.NotificationReceived),
object: nil,
queue: OperationQueue.main,
//// you get the notification and extract the userinfo dictionary and from the dictionary use the key notification key to extract the notificaiton as ckqn
using: { notification in
if let ckqn = notification.userInfo?[CloudKitNotifications.NotificationKey] as? CKQueryNotification {
self.iCloudHandleSubscriptionNotification(ckqn: ckqn)
}
})
Я получаю уведомление и отправляю его, ноПриведенный ниже обработчик уведомлений о подписке никогда не вызывается
@objc func iCloudHandleSubscriptionNotification(ckqn: CKQueryNotification)
{
// my code
}
Раньше он работал. Не знаю, какие изменения я сделал. Теперь я потратил часы на обработку уведомлений о подписке в облаке. Может кто-нибудь разобраться в этом и посоветовать?