Я хочу, чтобы в моем проекте JavaFX были push-уведомления в стиле Mac OS, что оказалось на самом деле очень трудным.
Я следовал подходу, описанному в принятом ответе:
Использование 10.8 Центра уведомлений в Java
Я клонировал связанный репозиторий github . Из проекта Xcode я экспортировал файл .dylib и переместил его в / usr / local / lib .
Я взял на себя Java-интерфейс для моего проекта.
interface NsUserNotificationsBridge extends Library {
NsUserNotificationsBridge instance = (NsUserNotificationsBridge)
Native.loadLibrary("/usr/local/lib/NsUserNotificationsBridge.dylib", NsUserNotificationsBridge.class);
public int sendNotification(String title, String subtitle, String text, int timeoffset);
}
Использование INsUserNotificationsBridge.instance.sendNotification(params...)
Теперь я могу отправлять push-уведомления!
![MacOS Notification when running my project with IntelliJ](https://i.stack.imgur.com/kcAYe.png)
Это работает даже при работе прямо из IDE (IntelliJ). В противовес примечанию автора, что
Если ваше java-приложение не входит в комплект приложений, тогда уведомления
не будет доставлено.
Это уже удивляет меня. Я строю один JAR-артефакт. Запускаем банку: все нормально, пуш-уведомление показывается. Объединение его в приложение: все хорошо, но без push-уведомлений! Также нет ошибок. Так что произошло совершенно противоположное тому, что написал автор!
(см. Мой Info.plist )
Что я сделал не так? Почему он не отображается при запуске как .app? Может быть, есть еще лучший способ сделать push-уведомления MacOS с помощью Java? Я уже знаю о способе выполнения appleScript, но мне не нравится его поведение.
Я на Java 9, кстати.