アフィリエイト収入実績をスマートフォンにプッシュ通知する方法

さくらレンタルサーバーを活用してGoogle AdSenseとAmazonのアフィリエイト収入レポートをiPhoneやAndroid端末にプッシュ通知します。レンタルサーバー活用術としていかがでしょうか。これはiPhoneへの通知にProwl、Androidへの通知にはNotify My Androidを利用します。

アフィリエイト収入実績を取得するには@hitoriblogさんのRubyスクリプトを使います。

さくらレンタルサーバーのRuby環境構築については拙エントリのこちらをご参考まで。

Affiliate-info-push-prowliPhoneでプッシュ通知を受けたところ

Affiliate-Info-Push-NMAHTC Desire Sでプッシュ通知を受けたところ

Rubyライブラリの追加とRubyのアップデート

adsense-info.rbの実行に必要なRubyライブラリをインストールします。

これで実行すると”CompatibilityError: incompatible encoding regexp match (UTF-8 regexp with ASCII-8BIT string)”というエラーが出てしまいます。文字エンコードの関係でエラーが出ており、Ruby-1.9.2で解消されるのではというのを見かけてRubyの環境を1.9.1から1.9.2に上げてみると”ArgumentError: invalid byte sequence in US-ASCII”と内容はかわりましたがまだエラーが出たままです。

最終的にはadsense-info.rbに「Encoding.default_external=”UTF-8″」を追記することでエラーは消えました。2行目に”# -*- coding: utf-8 -*-“と記述してUTF-8を宣言しているのですが効果がないようです。これで通常実行が可能となり、ホームディレクトリに”affiliate-info.txt”が出来ているはずです。

cronに登録する

そのままcrontabで登録してみてもうまくいきませんでした。どうやらcronで実行すると環境はシェルログインで準備した.cshrcの設定は反映されていないため、rubyコマンドがデフォルトコマンドが優先されてしまい、またライブラリも読み込んでくれません。そのためaffiliate-info.rbの先頭行にはrubyがインストールされている場所を絶対パスで書きます。

またrubyには”-I”というライブラリを指定するコマンドオプションがあるようですが、これもうまくいきませんでした。スマートではないような気がしましたが、環境変数を設定してからaffiliate-info.rbを実行するシェルスクリプト”affiliate-cron.sh”を作ってcronに登録しました。うまく動いているようです。

プッシュ通知させるための準備

必要なライブラリをインストールします。

Androidの場合はNotify My AndroidをAndroidマーケットからインストールし、Notify My Android – HomeでサインアップしてAPIキーを取得します。Prowlの場合はAppStoreからインストールしてProwl – iOS Push NotificationsにサインアップしAPIキーを取得します。

次にaffiliate-info.rbに、Google AdSenseとAmazonから取得したアフィリエイト実績をプッシュするための記述を追記します。

iPhoneにプッシュ通知するための設定(Prowl)

HTC Desire S(Android)にプッシュ通知するための設定(Notify My Android)

ファイルに書き出す必要はないのでFile.openはコメントアウトしておきました。以前、メールで通知する方法も試してみましたが、プッシュ通知のほうが便利でいいです。ご覧のとおり実績はというと・・・

謝辞

@hitoriblog さんのRubyスクリプトを改変させていただきました。この場を借りて御礼申し上げます。