chumbyでLDR未読数を表示するwidget

LDR unread countがchumby.comのwidgetとして公開された。
Livedoor Readerのアカウント名を設定すると、未読数が表示されて焦らされるが、1万超えたあたりからどうでもよくなった。
アップロードしたwidgetは基本privateで、publicにした後審査が入ってwidgetsの検索画面から他のユーザに使ってもらえるようになる。今回はだいたい4時間ぐらいで審査が通ったみたい。

DSCF2199

ダウンロード → SourceCode(Flash AS2 / CS3)

(うおお、前の記事書いてから1週間たってる・・・)
前のTwitter widgetより前に作って投稿してあったものなんだけど、これは数字が出るだけなので、Flash的にも手抜き。

Flashは手抜きだけど、chumby widget固有のノウハウである
1.クロスドメイン許可されていない外部のサーバーのデータを読みに行く
2.chumby.comにデータを保存できる設定画面を作る
3.chumby.comに保存したデータをwidgetから読み込む

という事をやってみたので、まとめておこう。

■1.クロスドメイン許可されていない外部のサーバーのデータを読みに行く
Livedoor Readerの未読数を取得するAPIを使う。

パラメータにuser=shokaishokaiなどすると未読数が出てくる。
特にXMLとかではないので、AS2の場合LoadVarsを使えば良い。

ローカルドメインで動かす分にはこれで構わないが、セキュリティの事もあってサーバーに置いてあるFlashは別のサーバーにあるデータを読みに行く事ができないようになっている。そのため、rpc.reader.livedoor.comを読みに行けない。前のtwitterで使ったXMLクラスなんかは例外。

そのため、大学院棟のサーバーにchumby.comからのアクセスを許可するcrossdomain.xmlを置いて、RubyでproxyするCGIを置いてそれをchumby上のFlashから読むようにした。

crossdomain.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<allow-access-from domain="*.chumby.com"/>
</cross-domain-policy>

*.chumby.com からのアクセスのみ許可すればよい

このサーバーにRuby適当に作ったproxyを置いて、Flashから読ませる。

これで外部ドメインのデータを読めるようになった。

■2.chumby.comにデータを保存できる設定画面を作る
widgetの管理画面で、設定値を入力するダイアログを出すようにした。
データはchumby.comに保存され、自作widgetがchumby上でロードされたしばらく後に設定値が_root直下の変数として現れるという仕様らしい。
LDR unread count customize

この辺のドキュメントを参考にした。

サイズは320×240 pixelで、Sample Parameter Example(AS2)に同梱されてた com.Chumby.WidgetParams.as を使うのが楽らしいので作ってみた
configure.fla
まあ今回はユーザ名を保存するだけなのでサンプルを削っただけなんだけど、送信が終わったらgetURLでjavascriptを呼んで自分自身を閉じたりとかしていて面白い。

■3.chumby.comに保存したデータをwidgetから読み込む
chumby.comに保存されたデータは、widgetが画面に読み込まれてからしばらくたってから、_rootに現れる。
どうやら毎回読み込みに行っているらしい。

値が_rootに現れるまで待たないと、undefinedになってしまうので待つ。
this.onEnterFrame = function(){
    if(username == null) return; // 待ちます
    ldr_loadUnread(username);
    delete this.onEnterFrame
}

こんな感じで、chumby+サーバーサイドができました。

タグ: , , , , ,

コメントをどうぞ


track feed