2012-07-30 2 views
18

이것은 일반적인 질문 일뿐입니다. 나는이 일을하고 싶은 곳에서 실제 프로젝트 나 다른 일을하고 있지 않다. Java로 응용 프로그램을 빌드하고 프레임 워크 또는 다른 것을 추가하고 Notication Center를 사용할 수 있습니까?Java의 10.8 알림 센터 사용

답변

16

간단하게 썼습니다. C ->Objective-C shim .dylib 함수를 내 보낸 showNotification 즉시 알림을 보냈습니다.

그런 다음 dylib에 내 보낸 함수에 JNA 래퍼를 썼습니다. RococoaJNAerator의 조합을 사용하면이 dylib를 모두 제거 할 수 있습니다.

그런 다음 간단한 Java 응용 프로그램을 작성하여 app bundle으로 바뀌 었습니다. 이것이 중요한 포인트입니다. 자바 애플리케이션이 앱 번들에없는 경우 알림은 전송되지 않습니다.

메시지는 알림 센터에 배달됩니다. 이 앱 번들에 있어야합니다 -

Screenshot of delivered notification

그것은 탁월 해 드리겠습니다, 당신은 단지 NSUserNotificationCenter의 규칙을 함께 연주한다.

Java 7, 9를 사용했습니다. Another question seems to have had even more success.

이 간단한 응용 프로그램을 작성하는 데 사용 된 코드는 available on github입니다. 여기에는 .dylib을 생성하는 xcode 프로젝트와 .dylib을 사용하여 알림을 전달하는 netbeans 프로젝트가 포함되어 있습니다.

+0

에의 통지를 수 이 코드를 github에 게시 하시겠습니까? –

+1

관련 코드에 대한 링크로 답변을 업데이트했습니다. 복잡하지 않고 샘플 코드로만 사용됩니다. – Petesh

+0

앱 번들없이 알림을 보내는 방법은 [이 답변] (http://stackoverflow.com/a/14698543)을 참조하십시오. –

5

응용 프로그램이 Growl 2.0으로 업데이트 될 때 가능한 해결책은 Growl 알림을 알림 센터에 전달하는 것입니다.

정보에 대한 Growl 2

으르렁 메시지를 사용하여 현재 버전으로 전달할 수 MoutainGrowl

포효는 어쩌면 libgrowl 또는 jgntp

는 깨끗한 해결책이 아니다하고있다 자바에서 사용할 수 있습니다 사용자에게 몇 가지 요구 사항이 있지만 실제로 작동하는 것은 맞습니다.

4

IntelliJ IDEA가 MountainLionNotificationsGrowlNotifications에서 알림을 처리하는 방법을 살펴 보시기 바랍니다.

다른 답변에서 제안 된 것처럼 JNA를 사용하여 NSObject를 조작합니다. 내가

8

'당신이 OSX에 알림을 표시 할 Apple script을 사용할 수 있습니다, 당신을 위해 일 수있는 해결책을 발견했습니다,이 시도 :

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

당신은 약 Apple script 읽을 수있는'here

+0

이것은 실제로 내가 찾은 가장 간단한 방법입니다. 나를위한 앱 번들없이 el capitan에서 작동합니다. –