NSUserNotification отображается только один раз, если вызывается в приложении: continueUserActivity: restorationHandler - PullRequest
0 голосов
/ 17 февраля 2019

Я разрабатываю простое расширение для MacO.Мое приложение будет индексировать некоторый контент в центре внимания.Когда я набираю некоторые ключевые слова, центр внимания запускает приложение application: continueUserActivity: restorationHandler .И приложение () отправит локальное уведомление.Код выглядит так:

func application(_ application: NSApplication, continue userActivity: NSUserActivity, restorationHandler: ([NSUserActivityRestoring]) -> Void) -> Bool {
    let notification = NSUserNotification()

    notification.title = "title"
    notification.subtitle = "subtitle"
    notification.soundName = NSUserNotificationDefaultSoundName

    NSUserNotificationCenter.default
        .deliver(notification)
}

И я использую macOs 10.14.3 .

Если мое приложение не работает, и я набираю ключевое слово в центре внимания, центр внимания запустит мое приложение и запустит application().И я увижу уведомление правильно.

Однако, если я снова наберу ключевое слово (мое приложение работает в фоновом режиме), в центре внимания все еще остается метод application(), но уведомление не появляется.Еще хуже, я мог видеть уведомление в центре уведомлений.

Кто-нибудь может помочь?Спасибо.

1 Ответ

0 голосов
/ 17 февраля 2019

Для отображения отдельно каждое уведомление должно иметь уникальный идентификатор.

notification.identifier = "different_kind"

Из документации (выделено мое):

Идентификатор уникален для уведомления.Уведомление, доставленное с с тем же идентификатором, что и существующее уведомление заменяет существующее уведомление, а не вызывает отображение нового уведомления.

Существуют также ограничения на скорость публикацииновые уведомления, так что имейте это в виду.

Наконец, если вы разрабатываете для Мохаве, вы, вероятно, должны изучить UNUserNotificationCenter, так как NSUserNotificationCenter устарела.

...