Android/iPhone/iPad判別メモ

基本的にはUA判断だけどちょっと工夫してみようかと。

たとえばPHPでは、

[php]
$ua = $_SERVER[‘HTTP_USER_AGENT’];
if(ereg("Android", $ua)){
//android端末だったときの処理
}
[/php]

でandroidかどうか判断するのが手っ取り早いかなと思います。
(別にpreg_matchでもいいです)
iPhone/iPadも同様の処理で判断できますし、バージョンを確認したければ、
2.x系列か、3.x系列か4.x系列か個別に判断すればいいと思います。

でまあUserAgentなので容易に偽装されてしまうんですね。

今回は(ガラケーは問題ないとして)PCからのアクセスを極力はじきたい!という感じでして。
そうするとUAだけだと判断付きません。

というわけでJavaScript側から手軽にやる方法として、こんなんでどうでしょうか。

[js]
var isTouch = (‘ontouchstart’ in window);
if(isTouch === false){
$("#word").html("このページはスマートフォン専用となっております");
}
else if(window.orientation === undefined) {
$("#word").html("このページはスマートフォン専用となっております");
}else{
//スマホくさい
}
[/js]

JavaScriptが有効になってないと使えないですが。
あとソースを難読化しておいた方がいいです。

上記のスクリプトはonload時に実行するようにするか、もっと早くDOMの構築時には判別するようにしてやればいいかと。
で、ポイントとしては、関数にしないでべた書き。関数の上書きされると回避されちゃうので。
まあ実行前にここ無効にされたら意味ないんですけど。

やってることは簡単で、タッチイベントの有無の検出と、
スマホの向き情報が定義されてるかどうかの判断です。
onorienattionchangeイベントで判別するか、と思ったんですが、android2.1以前だと存在しないみたいなので。

簡易的な処理にはUAの判別と組み合わせていいんじゃないかなあ~と。

(return undefined;)