携帯サイト作成時の色々

前回の続き。。

これまで約1ヶ月かけて作ってきたやつをとうとうリリースしました。
っていっても地元友達数人向けだけどね。。評価は上々。よかったです。

今回本格的に携帯向けサイトを作ってて発生した問題を色々殴り書き

携帯絵文字を使う

とりあえず1番はじめに出た要望がこれ。やらなきゃと思ってたけどめんどくさそうで後回しにしてたこと。
とりあえず以下のことをすれば絵文字は使えそう

  • リクエストパラメータ(GET、POST同様)に絵文字が含まれていたらサーバーで管理する文字列に変換する
  • レスポンスデータにサーバーで管理する文字列が含まれていたらキャリアごとに絵文字に変換する(PCの場合は画像で表示)

これを実現するためにサーブレットフィルタをかますことにした。wicketでパラメータを受け取った後だと?に変換されてるし、レスポンスはwicketがページを作った後やらなきゃいけないので、自作フィルタはwicketフィルタより前に定義。

リクエスト側はHTTPServletRequestWrapperを継承したクラスを作成し、getParameter関連をオーバーライドする。その中で絵文字を管理文字列にする処理を追加する。絵文字判定処理は以下のとおり

@Override
public String getParameter(String key){
    String param = super.getParameter(key);
    StringBuilder sb = new StringBuilder();
    if(param != nul){
        for(char c : param.toCharArray()){
            if(Character.UnicodeBlock.of(c) == Character.UnicodeBlock.PRIVATE_USE_AREA){
                //絵文字→管理文字列変換処理
                sb.append(newC);
            }else{
                sb.append(c);
            }
        }
    }
    return sb.toString();
}

レスポンス側はHTTPServletResponseWrapperを継承したクラスを作成し、getWriterとgetOutputをオーバーライドして、操作できるようにする。

これで絵文字を実現することができた。
auだけはエミュレータがないから未確認だけどね。。
腹減ったので飯でも食おうっと。。続く。。