携帯画面のサイズを取得するためのクラス/メソッドの作成
携帯電話のプロパティを取得するためにPEARのNet_UserAgent_Mobileモジュールを利用します。Net_UserAgent_Mobileがインストールされていない場合は以下のコマンドでインストールします。
-fオプションはNet_UserAgent_Mobileがbeta版のため、-oオプションは必要な最小限度のパッケージも同時にインストールを意味します。
# pear install -f -o Net_UserAgent_Mobile
Net_UserAgent_Mobileにはキャリア、機種の取得や画面サイズの取得といったメソッドが備わっており、次のようにして利用します。
// インスタンス生成 $agent = Net_UserAgent_Mobile::singleton(); // キャリア表示 echo $agent->getName(); // 機種名表示 echo $agent->getModel(); // 画面情報を取得 $display = $agent->getDisplay(); // 横サイズ表示 echo $display->_width; // 縦サイズ表示 echo $display->_height;
携帯電話の機種によってはNet_UserAgent_MobileのgetDisplay()では端末情報を取得できないものもあります。そこでバリューエンジンのWebサイトで公開されている端末プロファイルを利用します。
Net_UserAgent_MobileのgetDisplay()で画面サイズを取得できない際に端末プロファイルを読み込んで、画面サイズを返却する端末サイズマネージャークラスを作成します。
require_once 'Net/UserAgent/Mobile.php';
// クラス宣言
class DeviceManager extends Net_UserAgent_Mobile{
// オブジェクト定義
var $agent;
// コントラクタ
function DeviceManager(){
$this->agent = & parent::singleton();
}
// モデル名取得
function getModel(){
return $this->agent->getModel();
}
function getDisplay(){
// Net_UserAgent_Mobileでの画面情報取得
$display = $this->agent->getDisplay();
// 画面情報があれば返却
if($display->_width){
return $display;
}
// モデル名を取得
$device_name = $this->getModel();
$deviceArray = array();
// UserAgent情報のCSVファイル読込
$_file = 'UserAgent_YYYY-MM-DD.csv';
$_array = explode("\n",file_get_contents($_file));
foreach($_array as $k=>$v){
// キャリア,機種名,デバイス名,USER_AGENT,USER_AGENT_SCRAP,最終更新日 の形式
$_d = explode(',',$v);
// モデル名をキーとして機種名をvalueにした配列を作成します
$deviceArray[$_d[2]] = $_d[1];
}
// 機種名を取得
$model_name = $deviceArray[$device_name];
// 端末ファイルにデータがない場合240でサイズを返却
If(!$model_name){
$display->_width = 240;
$display->_height = 240;
return $display;
}
$display_info = array();
// 画面情報のCSVファイル読込
$_file = 'DisplayInfo_YYYY-MM-DD.csv';
$_array = explode("\n",file_get_contents($_file));
foreach($_array as $k=>$v){
//キャリア,機種名,表示タイプ,横,縦,最終更新日 の形式
$_d = explode(',',$v);
// 機種名が一致した場合
if($model_name == $_d[1] && $_d[2] == 'ブラウザ画像サイズ'){
$display_info = $_d;
break;
}
}
// 横,縦ともにサイズのデータがある場合
if($display_info[3] && $display_info[4]){
$display->_width = $display_info[3];
$display->_height = $display_info[4];
}
// データがない場合
else{
$display->_width = 240;
$display->_height = 240;
}
return $display;
}
}
バリューエンジンの端末プロファイルUserAgent_YYYY-MM-DD.csvより機種名を取得して、機種名をキーとしてDisplayInfo_YYYY-MM-DD.csvより画面サイズを取得するメソッドを作成します。端末プロファイルは次のようなフォーマットとなっています。
UserAgent_YYYY-MM-DD.csvには「キャリア,機種名,デバイス名,USER_AGENT,USER_AGENT_SCRAP,最終更新日」の形式で、DisplayInfo_YYYY-MM-DD.csvには「キャリア,機種名,表示タイプ,横,縦,最終更新日」の形式でデータが入っています。UserAgent_YYYY-MM-DD.csvより携帯機種のUserAgentから機種名を取得して取得した機種名と表示タイプの「ブラウザ画像サイズ」でCSV内を検索して縦、横のサイズを取得します。


