Наблюдатель NotificationCenter, использующий функцию блокировки, не вызывается - PullRequest
0 голосов
/ 01 декабря 2019

В моем 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
 }

Раньше он работал. Не знаю, какие изменения я сделал. Теперь я потратил часы на обработку уведомлений о подписке в облаке. Может кто-нибудь разобраться в этом и посоветовать?

...