我想在我的JavaFX项目中使用Mac OS风格的推送通知,事实证明这真的很困难。
我在以下情况下遵循公认的答案中所述的方法: Using 10.8 Notification Center in Java
我克隆了链接的github repo。从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...)
发送推送通知!
这甚至在直接从IDE(IntelliJ)运行时也有效。与作者的注释相反
如果您的Java应用程序不在应用程序捆绑包中,则通知 将不会交付。
那已经使我惊讶了。我构建了一个JAR工件。运行jar:一切正常,显示推送通知。将其捆绑到应用中:很好,但是没有推送通知!也没有错误。因此,与作者所写的恰恰相反!
(请参阅我的Info.plist)
我做错了什么?为什么以.app启动时没有显示?同时也许有更好的方法用Java进行MacOS推送通知吗?我已经知道执行applescript的方式,但是我不喜欢它的行为。
我正在使用Java 9。