2012-07-30 11 views
18

esto es solo una pregunta general. No estoy teniendo un proyecto real o alguna otra cosa donde quiera hacer esto. ¿Es posible crear una aplicación en Java y agregar algo de framework o algo más y usar Notication Center?Usando 10.8 Notification Center en Java

Respuesta

16

Escribí un simple C ->Objective-C shim .dylib que exportó una función showNotification que entregó una notificación inmediatamente.

Luego escribí un contenedor JNA a la función exportada en el dylib. Estoy seguro de que puede usar una combinación de Rococoa y JNAerator para eliminar este dylib por completo.

Luego escribí una aplicación Java simple que convertí en app bundle. Este es el punto importante. Si su aplicación Java no está en un paquete de aplicaciones, entonces las notificaciones no serán entregadas.

Mensajes entregados en el centro de notificaciones.

Screenshot of delivered notification

Es eminentemente factible, sólo hay que jugar con las reglas del NSUserNotificationCenter - debe estar en un paquete de aplicación.

Utilicé java 7, actualización 9 para esto. Another question seems to have had even more success.

El código utilizado para compilar esta sencilla aplicación es available on github. Contiene un proyecto xcode para crear el .dylib, y un proyecto netbeans que hace uso del .dylib para entregar notificaciones.

+0

Puede usted, por favor, ¿publica este código en github? –

+1

He actualizado la respuesta con un enlace al código correspondiente. No es complicado en absoluto y solo pretende ser un código de muestra. – Petesh

+0

Consulte [esta respuesta] (http://stackoverflow.com/a/14698543) para saber cómo enviar notificaciones sin un paquete de aplicaciones. –

5

Una posible solución será Growl cuando la aplicación se actualice a Growl 2.0 que enviará las notificaciones Growl al Centro de notificaciones.

información sobre Growl 2

mensajes de Growl pueden reenviarse con las versiones actuales mediante el uso de MoutainGrowl

Growl se puede utilizar bajo Java con libgrowl o jgntp

tal vez no es la solución más limpia y tiene algunos requisitos para el usuario, pero definitivamente es uno que funciona

8

que he encontrado una solución que podría funcionar para usted, usted puede utilizar Apple script para mostrar notificaciones en OSX, intente esto:

Runtime.getRuntime().exec(new String[] { "osascript", "-e", "display notification "This is a message" with title "Title" subtitle "Subtitle" sound name "Funk"" }); 

se puede leer sobre Apple script 's notificaciones en here

+0

Esta es la manera más simple que encontré para hacer esto, funciona en el capitan sin un paquete de aplicaciones para mí –