2012年07月05日

FuelPHPのAgentクラスによる端末振り分けが簡単すぎる

PC/携帯ページと端末による振り分けを必要としたことはないでしょうか?

FuelPHPにはAgentクラスがあり、このクラスでは Browser Capabilities Project 制作の browscap.ini を使うことでユーザーエージェントから各種情報が簡単に判明します。ブラウザ名やプラットフォームはそれぞれ Agent::browser() で (IE・Chromeなど)、 Agent::platform() で (Win7など)と手軽に取得ができるのです。
これらの情報を含めた Agent::properties() を使うと得られたデータの一覧が表示されます。

FuelPHP_Agent01.jpg
上記は iPhone 4S の情報

モバイル端末から実行

この便利なAgentクラスには携帯端末からのアクセスかどうかを判定する Agent::is_mobiledevice() というメソッドが用意されておりますが、スマートフォンかどうかの判定はできません。つまりスマートフォンからのアクセスが Agent::is_mobiledevice() で true となってしまいます。

今の時代、所謂携帯向けだけではなくスマートフォンからのアクセスは専用のページを用意することも多いでしょう。そこでスマートフォンと判定できるようAgentクラスを拡張された方がおられます。

スマートフォンに対応したAgent::is_smartphone()メソッド

FuelPHPのAgentクラスと拡張 - BTT's blog

上記の BTT's blog さんは、Agentクラスを拡張して、Agent::is_smartphone() メソッドによりスマートフォンかどうかの判定が可能となっております。これによりスマートフォンからのアクセスかどうかが判明するため、あとはそれ用のViewを用意すれば良いだけです。

なお既存の Agent::is_mobiledevice() に変更はありません。ですから依然としてスマートフォンをモバイル端末と判定するため、以下のように先にAgent::is_smartphone() メソッドでスマートフォンかどうかを判定し、次に Agent::is_mobiledevice()を使うことで残りのモバイル環境を携帯端末と判断すればよいかと。

if (Agent::is_smartphone()) {
    // スマートフォン
} elseif (Agent::is_mobiledevice()) {
    // 携帯
} else {
    // PC
}

Firefoxのプラグイン「FireMobileSimulator」を使って試してみた

browscap.ini の情報不足もあってか新しい端末やマイナーな端末に関しては判定がPCとでることがありましたが、有名どころのスマートフォンに関しては正確に判定できております。

いや〜便利ですね〜。以前にPEARのライブラリを使って端末情報を判定していたのですが、それだけだとスマートフォンかどうかの判定ができないため独自のクラスを使っておりました。FuelPHPだと簡単に実装できてしまいました。

参考

タグ:Agent
posted by ニックネーム at 20:15 | Comment(0) | TrackBack(0) | FuelPHP(ニュース) | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
※ブログオーナーが承認したコメントのみ表示されます。
この記事へのトラックバックURL
http://blog.seesaa.jp/tb/279094100
※ブログオーナーが承認したトラックバックのみ表示されます。

この記事へのトラックバック
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。