2009年8月14日金曜日

AdobeAIRでGrowl-as3growl(挫折)

以前Rawr! FlexGrowl Component Availableというのを試してみたのですが、今回、mikechambersが作っている、as3growlというのを発見し、試してみました。

Rawr! FlexGrowlの方は、"AIRアプリとしてGrowlチックな表示が出来るライブラリ"でしたが、as3growlの方は、AS3からGrowl本体へSocket通信して、表示はGrowlに任せる仕組みのようです。

GoogleCodeに上がっているサンプルでは、Growlのポートが指定されていないので、GrowlServiceクラスの作成時に、以下のようにポートを渡してあげると、IOExceptionは発生しなくなります。

new GrowlService(a, "localhost", 23052);

23052というポートは、Growlの設定画面 > ネットワーク に書いてありました。
また、「受信される通知を聞く」というチェックボックスをオンにする必要もあります。

動かしてみると、以下の感じのパケットが送信されているみたい。

GNTP/1.0 REGISTER NONE
Application-Name: MESH
Application-Icon: file:///Users/****/GrowlTest/icon.png
Notifications-Count: 1

Notification-Name: Foo Name
Notification-Display-Name: Notification Display Name
Notification-Enabled: True

GNTP/1.0 END

でもー、Growlの表示が出てこないんですよねー。
as3growlのドキュメントを見直してみると、
Requirements

* Flash Player 9 or higher
* Development build of Growl with support for the service

Growl Development Build Required

AIR / Flash support in Growl is currently only available in a Growl development build, and is not available in a Growl release. In order to use the library, you must download a development build and compile the build on Mac using Xcode 3.1.


...とな。あー、なんだか残念。
自分だけの環境ならいいけど、みんなに使ってもらうアプリではツライよな。

Growl for Windowsでは結構動いたりするんかもしれないけど?!

java,scalaからGrowlに通知を送る方法 /ゆろよろ日記をみて、Javaでさくっと動かせました。
as3growlで動かなくて悲しくなっていた所だったので、心が落ち着いた(笑)
この方法だと、ネイティブライブラリ(ibgrowl.jnilib)を作成してアクセスする形になるんですね。

脱線しちゃったけど...AS3からGrowlへの通信やりたかったなぁー
AIRアプリでGrowl風Notificationは....作るしかないのかなぁ...
• • •