У меня есть вопрос о 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)
}
}