Net_Growl を使ってみた

ref: Net_Growl 2.7.0
ref: ネイティブMacアプリをPHPで操作しよう (3/3)- @IT
関連: OS X に macports で入れた pear (@ PHP 5.2.10) が使えない現象とそれへの対処 - やこ〜ん SuperNova2

せっかく pear のテストのために Net_Growl pear パッケージを入れてみたので、試しに使ってみた。

Net_Growl を使うと、php から簡単に Growl をたたくことができる。php で書かれたバッチ処理のためのスクリプトやらも持っている身としては、Growl で通知できればちょっと嬉しいものである。

必要な準備

% sudo pear install net_growl-beta

Growl 側の設定

@IT の記事 では触れられていないが、Net_GrowlUDP によって Growl への通知を行う関係上、Growl 側で UDP による通知を受け付けるように設定する必要がある。

具体的には、システム設定などから Growl の設定画面を開いた上で、Network タブで、

  • Listen for incoming notifications
  • Allow remote application registration

の二つを有効にしておく必要がある。

また、このままだと同一サブネット上のどこからでも、このコンピュータへと Growl の通知を投げつけることができてしまう。そのことが不気味であるなら、パスワードを設定しておくべきだろう。

書いてみたコード

<?php
require_once 'Net/Growl.php';

$growlApp = new Net_Growl_Application("AppName", array("NotifyA"), "Growl で設定したパスワード");
$growl = new Net_Growl($growlApp);
$growl->notify("NotifyA", "title", "body");
?>

これを Growl の動いているマシンで実行すると、Growl の通知がポップアップするであろう。

コードについてメモ

  • new Net_Growl() の第一引数は参照を受け取るので、Net_Growl_Application インスタンスの格納されている変数などを指定せねばならない
  • notify() の第一引数に指定する通知の名称は、Net_Growl_Application の第二引数の array にある文字列のどれかでなくてはならない
  • Growl 側でパスワードを設定しなかった場合、Net_Growl_Application の第三引数は不要である