Friday, July 31, 2009

iPhone backgrounder を試してみる

というわけで、jailbreakしたらまずやってみたかったのはこれである。
backgrounder.

要するに アプリのバックグラウンド実行を可能にするユーティティ。

特に設定などはなく、アプリから離れるときにホームボタンを長押しするとバックグラウンドが有効になる。
無効にするときは再度長押しでホームに戻る操作をすればいいみたいな。
注意する点は、この操作はトグルであるということ。一度enableにしたら、次からは通常の操作でよい。

さて。
LimeChat (IRCクライアント) で試したところ、たしかにホームにもどっても接続を維持し、ログウィンドウも正常に更新されつづけていた。
これはよい。
ついでに、TouchTerm(SSHクライアント)でも試してみたが、これも良好。

次にSafariでのウェブアプリケーションではどうなのかというところ。
いろいろとテストするために次のようなJavaScriptを用意して、挙動を確かめた。

function request () {
var req = new XMLHttpRequest();
req.onreadystatechange = function(e) {
if (req.readyState !=4 ) return;
var now = new Date();
document.getElementById('request').innerHTML = "Success at " + now;
}
req.open('GET', '/', true);
req.send(null);
}

function init () {
var count = 0;
setInterval(function(){ count++ ; document.getElementById('count').innerHTML=count;}, 1000 );
setInterval(request, 15 * 1000);
}

なにをしてるのかといえば、ローカルでのタイムアウト処理とその中でのリモートへのリクエストであり、
一秒ごとにカウントアップする text と、15秒おきにHTTPアクセスを試みて成功したらその時間を Element の text に表示するというもの。

で、以下のケースを調査
  1. disable でタブを切り変えた場合
  2. enable でタブを切り変えた場合
  3. enable でタブをアクティブのままホームへ戻った場合
  4. enable でロックした場合
結果
  1. すべて停止の模様
  2. すべて停止の模様
  3. バックグラウンド動作していた
  4. バックグラウンド動作していた
まぁ何がしたかったかといえば、先日Google LatitudeがiPhone対応になったので、これをバックグラウンドで動かせるのかってこと。
結果的には backgrounder を導入すれば可能ということなのだが、タブを切りかえてしまうとダメなので、他のサイトをブラウジングしている場合は更新できないことになる。
このへんはSafari以外のブラウザ使うとかで対応するしかなさげ。

No comments: