iappli用に機種に合わせた描画サイズのjamを動的生成するには

jamを動的生成する

iappli用に機種に合わせた描画サイズのjamを動的生成する方法。
試行錯誤中。

iappliの描画サイズはjamのDrawAreaに設定する。

しかし、ドコモはサーバサイドで機種の画面サイズがとれない。

このため、自分で[機種][画面サイズ]の設定ファイルをメンテする必要があるんだが、これをドコモの公式サイトから自動でとってきて、運用コスト0で何とかしよう、という話。

とりあえず、以下ソースのロジックで運用しています。

  1. jamファイルにDrawAreaを設定しない
  2. iappliのダウンロード先は下記のPHPにする
  3. PHPは、指定されたjamを出力しつつ、最後にDrawAreaを機種に合わせて出力

設定ファイルは、

  • ユーザのアクセス毎に設定ファイルの日付をチェック
  • 日付が今日でなければ、ドコモのサイトからデータ取得
  • 新機種の情報等があれば、メールで管理人にお知らせ

この方法は、iappliのダウンロード先をPHPにしちゃってるんだが、その前はjamファイル自体でPHPを実行できるようにして、jamファイルの最後でDrawAreaを出力するスクリプトをincludeしていた。

その運用が半年以上問題なかったので、ドコモから設定ファイルを取得する部分については、今のところ問題なさそう。といっても、今後のことは分からないが。

追記(2009/3/2)

現在でも、そのまま使えてます。意外と長持ち。
ソースをコピペするのが大変なので、↓にzipして用意しました。
http://onceand.com/public/share/jam.zip

追記(2009/6/2)

iモードブラウザ2.0がコケて、UAが変更になった件にとりあえず対応。
(P07A・N06AのUAが、P07A3・N06A3になった)

>if($name == ‘P07A3’) $name = ‘P07A’;
>if($name == ‘N06A3’) $name = ‘N06A’;

http://www.nttdocomo.co.jp/service/imode/make/content/spec/useragent/index.html

tonogata
tonogata

13件のコメント

  1. 設定に関しては、ログファイル関連(LOG_FILEとか)の権限などかな。エラーメッセージないと何とも言えないっす。あと、PHP5対応のサーバかどうか、とか?

  2. ファイルがない場合、勝手に新規ファイル作ります。
    なので、ディレクトリへの書き込み権限あれば、設置しなくても問題ないです。

  3. 設定する箇所は
    MAIL_TO = メールアドレス
    LOG_FILE = ドコモから取得した設定ファイルのパス
    以外にありますか?

  4. MAIL_TO = メールアドレス
    LOG_FILE = ドコモから取得した設定ファイルのパス
    設定を変えてもerrorと出てしまいます

  5. エラーメッセージもなくerrorだけ出ています。

    // パラメータがない
    if(!isset($_GET[PARAM_APPLI]) || !isset($_GET[PARAM_MODE])) exit('error');

    このパラメータに関してるのでしょうか?

  6. errorがなくなってPHP実行ミスらしき(エラーページに白磁)が表示されていますが

    ソース内を確認してみましたが

    default:
    print 'error';
    break;

    の上か下に
    ]
    が一個多いようです。どれかに//入れますか?

  7. ]が多いとかは、こちらでソースみた感じでは問題ないように思います。
    エラーログの内容が分かると助かりますが、apacheのエラーログは見れない環境ですか?

tonogata へ返信する返信をキャンセル

メールアドレスが公開されることはありません。 が付いている欄は必須項目です