こちらへ移動
http://dozo.matrix.jp/pear/net_useragent_mobile
DoCoMoマップ利用 PEAR::Net_UserAgent_Mobile_DoCoMoDisplayMap
携帯端末判別の決定版。
ケータイコンテンツ開発には必須になるやも。
(ノ・・)ン。。。。。。(((●コロコロッ
ケータイからアクセスしてきたとき、
ケータイの端末判別情報はUserAgent?のみ。
(キャリヤによりけり。&公式かどうかによりけり)
少なくとも勝手サイトの場合はこれしかない。
UserAgent?を細かく分析して携帯情報端末を判別するというのは結構面倒くさかったりする。
そしてトドメはvodafone3GC型。
最近vodafoneが売りにしている3G,3Gとはこれのこと。
携帯端末自体も使い勝手が最悪なのだが、
UserAgent?は機種によってバラバラ。
Motorolaは一番ひどい。
(まぁ、vodafoneも反省しているみたいだが。)
そんなこんなに対応してケータイを判別してくれるありがたーいパッケージがPEAR::Net_UserAgent_Mobile
http://pear.php.net/package/Net_UserAgent_Mobile
PerlのCPANにHTTP-MobileAgentと言うのがあるのだが、
これの移植?みたい。Perlはよくわからんです。
もう一つPEAR::Net_UserAgent_Detectというのがあるが、
これはPCブラウザ用。
(ちょっとできの方が。。。。)
0.23.0現在ベータ版のためインストールには-fを付ける必要がある。
# pear install -f Net_UserAgent_Mobile
ソースコードはこんな感じ
require_once('Net/UserAgent/Mobile.php'); // インスタンス生成(ユーザーエージェント解析) // 解析するユーザーエージェントを指定することも出来る $agent = &Net_UserAgent_Mobile::singleton(); // エラー回避(将来的には不要になると思う。) if( !method_exists( $agent , "isDoCoMo" ) ){ switch( true ) { case ($agent->isDoCoMo()): // DoCoMoかどうか echo "DoCoMoだよ。"; break; case ($agent->isVodafone()): // vodafoneかどうか echo "vodafoneだよ。"; break; case ($agent->isEZweb()): // ezwebかどうか echo "ezwebだよ。"; break; default: echo "たぶんパソコン。"; break; } } else{ echo "判別できなかった。ごめんね。"; }
ケータイ端末判別を自前で作成すると結構な手間なので、
コレを使うとすごい楽。
ただ、このパッケージだけでは実運用のときに足りないので、
拡張したクラスを作ることになると思う。
(対応している画像フォーマットを指定したりとか、
QVGAに対応しているかどうかとか)
はまりポイント
・定義にdie()がちりばめられているので、 いきなり画面が真っ白になるときがある。 (少しはメッセージを入れて欲しいぞ。) ・共通メソッドが十分でないのでインスタンスのメソッド名を 確認してから使わないと構文エラーが画面に出る。 ・判別し損なったときNonMobileで出力して欲しいのだが、 PEAR::raiseErrorがかえってきてエラーが画面に出る ・singletonパターンの実装が少し変なような。。。。 ・Ver.0.23.0時点でV802Nには対応していない模様。 => 0.24.0で改善されてるようです。 ・auだけ_serialNumberプロパティが空になる。 別途$_SERVER["HTTP_X_UP_SUBNO"]から取得する必要がある