PEAR::Net_UserAgent_Mobile を利用した携帯判別

Net_UserAgent_Mobile

携帯向けのアプリを作るとき、アプリ側で最もほしい情報は、

  • キャリア
  • 機種
  • 識別番号(ユーザー別 or 端末別)

の3つであろう。この情報の取得には、PHP では、PEAR の Net_UserAgent_Mobile というライブラリが便利だ。

前提

私は PHP5 を使っている。PHP4 でもこのライブラリは使える模様。

インストール

PEAR がインストールされていることが前提。

% pear install -f Net_UserAgent_Mobile

でインストール。ベータ版なので -f オプションが必要。

使い方

たとえばこんな感じ。

<?php

require_once('Net/UserAgent/Mobile.php');

$ua = &Net_UserAgent_Mobile::singleton();

# キャリア識別(3大キャリアの他に Willcom も識別可能) と識別番号
switch( true )
{
        case ($ua->isDoCoMo()):
           echo "The career is DoCoMo<br/>";
           echo "Serial number is " . $ua->getSerialNumber() . "<br/>";
           break;

        case ($ua->isVodafone()):
           echo "The carrier is Softbank<br/>";
           echo "UID is " . $ua->getUID() . "<br/>";
           break;

        case ($ua->isEZweb()):
           echo "The carrier is Au<br/>";
           echo "UID is " . $ua->getUID() . "<br/>";
           break;

        default:
           echo "something else";
   break;
}

# ユーザエージェント(≒キャリア)
$carrier = $ua->getName();
echo "The user agent's name is $carrier<br/> ";

# 機種
$model = $ua->getModel();
echo "The model is $model <br/>";

# 画面サイズ
echo "Height: "  . $ua->getDisplay()->getHeight() . "<br/>";
echo "Width: "  . $ua->getDisplay()->getWidth() . "<br/>";

?>

ひとこと

ときどき、Docomo の携帯の識別に失敗する。(エラーになる) でもソースコードはそれほど難しくないので、ソースを追っかけてみるといいだろう。
ケータイの端末ID・ユーザIDの取得についてまとめてみました」によれば、Docomo の識別番号の取得は面倒ぽい。(携帯サイト自体に仕掛けを仕込んで置かなければならないため)