• []
  • []
  •  
  • del.icio.us 
  •  
  • Yahoo!֥åޡϿ 

PEAR::Net_UserAgent_Mobile 3G対応携帯判別(ケータイ判別)

PHP 求人 募集 Symfony CakePHP Smarty Ruby on Rails

PEAR::Net_UserAgent_Mobile 3G対応携帯判別(ケータイ判別) 概要

携帯端末判別の決定版。
ケータイコンテンツ開発には必須になるやも。

携帯電話からアクセスしてきたとき、
ケータイの端末判別情報はUserAgentのみ。
(キャリヤによりけり&公式かどうかによりけり)
少なくとも勝手サイト(キャリア公式じゃないサイト)の場合はこれしかない。

UserAgentを細かく分析して携帯情報端末を判別するというのは結構面倒くさかったりする。
そしてトドメはvodafone3GC型。
最近vodafoneが売りにしている3G,3Gとはこれのこと。
携帯端末自体も使い勝手が最悪なのだが、
UserAgentは機種によってバラバラ。
Motorolaは一番ひどい。
(まぁ、vodafoneも反省しているみたいだが。)
Softbankに変わってから端末自体はグッと良くなった。

そんなこんなに対応してケータイを判別してくれるありがたーいパッケージが PEAR::Net_UserAgent_Mobile
http://pear.php.net/package/Net_UserAgent_Mobile

PEAR::Net_UserAgent_Mobile インストール

0.30.0現在ベータ版のためインストールには-fを付ける必要がある。
というよりいつまでβでいつづけるつもりだろうか?
# pear install -f -o net_userAgent_mobile

PEAR::Net_UserAgent_Mobile サンプル

ソースコードはこんな感じ

require_once('Net/UserAgent/Mobile.php');
 
// インスタンス生成(ユーザーエージェント解析)
// 解析するユーザーエージェントを指定することも出来る
$agent = Net_UserAgent_Mobile::singleton(); 
 
switch( true )
{
  case ($agent->isDoCoMo()):   // DoCoMoかどうか
    echo "DoCoMoだよ。";
    if( $agent->isFOMA() )
      echo "Fomaだよー";
    break;
  case ($agent->isVodafone()): // softbankかどうか
    echo "softbankだよ。";
    if( $agent->isType3GC() )
      echo "3GCだよー";
    break;
  case ($agent->isEZweb()):    // ezwebかどうか
    echo "ezwebだよ。";
    if( $agent->isWIN() )
      echo "winだよー";
    break;
  default:
    echo "たぶんパソコン。";
    break;
}

ケータイ端末判別を自前で作成すると結構な手間なので、 コレを使うとすごい楽。 ただ、このパッケージだけでは実運用のときに足りないので、 拡張したクラスを作ることになると思う。 (対応している画像フォーマットを指定したりとか、 QVGAに対応しているかどうかとか)

PEAR::Net_UserAgent_Mobile 補足

  • 定義にdie()がちりばめられているので、いきなり画面が真っ白になるときがある。 (少しはメッセージを入れて欲しいぞ。)
  • 共通メソッドが十分でないのでインスタンスのメソッド名を確認してから使わないと構文エラーが画面に出る。
  • 判別し損なったときNonMobileで出力して欲しいのだが、PEAR::raiseErrorがかえってきてエラーが画面に出る
  • singletonパターンの実装が少し変なような。。。。
  • Ver.0.23.0時点でV802Nには対応していない模様。 ⇒ 0.24.0で改善されてるようです。
  • auだけ_serialNumberプロパティが空になる。別途$_SERVER[“HTTP_X_UP_SUBNO”]から取得する必要がある

pear/net_useragent_mobile.txt · 最終更新: 2007/07/28 17:53 by dozo