Приложение для Mac: push-уведомления приходят, но не отображаются в Центре уведомлений

У меня есть вопрос о push-уведомлениях в macOS. Я успешно получаю уведомления в своем приложении для Mac (я вижу, что они нажимают didReceiveRemoteNotification в моем делегате приложения). Но на самом деле в Центре уведомлений ничего не отображается.

То же самое уведомление отлично отображается в моей версии того же приложения для iOS, поэтому я почти уверен, что мое push-уведомление сформировано правильно.

В macOS нужно ли deliver брать содержимое push-уведомления и deliver, чтобы оно отобразилось?

В iOS мне просто нужно сформировать push-уведомление с определенными параметрами, и оно будет доставлено как видимое push-уведомление (в отличие от тихого фонового уведомления). Мне интересно, верно ли то же самое для macOS (10.13).

Вот мой код делегата приложения:

class AppDelegate: NSObject, NSApplicationDelegate, NSUserNotificationCenterDelegate {

  func applicationDidFinishLaunching(_ aNotification: Notification) {
      NSUserNotificationCenter.default.delegate = self
  }

  func application(_ application: NSApplication, didReceiveRemoteNotification userInfo: [String : Any]) {
    let dict = userInfo as! [String: NSObject]
    let notification = CKNotification(fromRemoteNotificationDictionary: dict)

    if let sub = notification.subscriptionID{
      print("Notification: \(sub)") //<-- This fires every time a notification arrives
    }
  }

  //Make sure the notification shows up even if the app is active
  func userNotificationCenter(_ center: NSUserNotificationCenter, shouldPresent notification: NSUserNotification) -> Bool {
    return true
  }

  //??? - Do I need something like this? - ???
  func userNotificationCenter(_ center: NSUserNotificationCenter, didDeliver notification: NSUserNotification) {
    NSUserNotificationCenter.default.deliver(notification)
  }
}



Ответы (1)


Оказывается, когда я регистрировался на уведомления, я делал так:

NSApplication.shared.registerForRemoteNotifications(matching: [])

Это позволяло получать тихие фоновые уведомления, но я опускал типы предупреждений, которые позволяют получать push-уведомления пользователя.

Это исправило:

NSApplication.shared.registerForRemoteNotifications(matching: [.alert, .sound, .badge])
person Clifton Labrum    schedule 30.07.2018