2012-07-30 6 views
18

Dies ist nur eine allgemeine Frage. Ich habe kein aktuelles Projekt oder etwas anderes, wo ich das machen möchte. Ist es möglich, eine App in Java zu erstellen und etwas Framework-Zeug oder etwas anderes hinzuzufügen und Notication Center zu verwenden?Verwenden von 10.8 Notification Center in Java

Antwort

16

Ich schrieb eine einfache C ->Objective-C shim .dylib, das eine Funktion exportierte showNotification Das lieferte sofort eine Benachrichtigung.

Dann schrieb ich einen JNA Wrapper für die Funktion in der Dylib exportiert. Ich bin sicher, dass Sie eine Kombination von Rococoa und JNAerator verwenden können, um diese Dylib ganz zu beseitigen.

Dann schrieb ich eine einfache Java-Anwendung, die ich in eine app bundle verwandelte. Dies ist der wichtige Punkt. Wenn Ihre Java-Anwendung nicht in einem App-Bundle enthalten ist, werden keine Benachrichtigungen gesendet.

Nachrichten an das Benachrichtigungscenter gesendet.

Screenshot of delivered notification

Es ist eminent machbar, müssen Sie nur noch mit den Regeln des NSUserNotificationCenter Mitspielen - es in einem App-Bundle sein muss.

Ich habe Java 7, Update 9 dafür verwendet. Another question seems to have had even more success.

Der Code zum Erstellen dieser einfachen Anwendung ist available on github. Es enthält ein xcode-Projekt zum Erstellen der .dylib und ein Netbeans-Projekt, das die .dylib zur Übermittlung von Benachrichtigungen verwendet.

+0

Can Sie, bitte, veröffentlichen Sie diesen Code auf dem GitHub? –

+1

Ich habe die Antwort mit einem Link zum entsprechenden Code aktualisiert. Es ist nicht im geringsten kompliziert und ist nur als Beispielcode gedacht. – Petesh

+0

Siehe [diese Antwort] (http://Stackoverflow.com/a/14698543) für das Senden von Benachrichtigungen ohne ein App-Bundle. –

5

Eine mögliche Lösung wird Growl sein, wenn die App auf Growl 2.0 aktualisiert wird, die Growl-Benachrichtigungen an die Notification Center weiterleiten wird.

Informationen über Growl 2

Growl Nachrichten können mit den aktuellen Versionen weitergeleitet werden unter Verwendung MoutainGrowl

Growl kann unter Java mit libgrowl oder jgntp

es vielleicht die sauberste Lösung nicht verwendet werden, und es hat einige Anforderungen an den Benutzer, aber es ist definitiv einer, der funktioniert

4

Ich schlage vor, Sie sehen, wie IntelliJ IDEA Benachrichtigungen in und GrowlNotifications behandelt.

Wie in anderen Antworten vorgeschlagen, verwendet es JNA, um NSObjects zu manipulieren.

8

Ich habe eine Lösung gefunden, die für Sie arbeiten, Sie Apple script verwenden können Benachrichtigungen auf osx zu zeigen, versuchen Sie dies:

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

Sie können über Apple script lesen 's-Benachrichtigungen in here

+0

Dies ist eigentlich die einfachste Art, dies zu tun, funktioniert auf El Capitan ohne ein App-Bundle für mich –