JavaScriptでiOSデバイスの機種名をどこまで識別できるのか。

…ということで、iPhone / iPad / iPod touch の機種名や世代を、JavaScriptを使って特定してみます。

 → 動作デモとサンプルコードはこちら。
手元には iOS 6 な iPhone 4S と 3GS しか無いので、充分なテストはしていません。
不具合などあれば教えて頂けると。

まずは navigator.userAgent あるいは navigator.platform の文字列を見ることで、とりあえず iPhone か iPad か iPod touch かの区別はつきます。
iPhoneであるという事が判ったら、screen.width と screen.height の値を取得して、
と切り分け出来ます。

次に、アスペクト比が 4 : 3 だった機種のうち、iPhone 4 と 4S は Retinaディスプレイが搭載されています。window.devicePixelRatio の値を見て、
と判断できます。

さて、4 と 4S の判別です。これは確実に切り分けることができません。ただし、iOSのバージョンが 4 であれば、その機種は確実に iPhone 4 です。
OSのバージョンは navigator.userAgent から得ることができます。iPhone 4S は、発売時に既に iOS 5 が載っていたので、OSのバージョンが "4.x" ということは有り得ません。
初代 iPhone / 3G / 3GS も確実に切り分ける方法はなさそうです。こちらも OS のバージョンを見ることによって、多少は絞り込めます。

iPad は全ての機種がアスペクト比 4 : 3 なのですが、iPhoneと同様にRetinaかどうかを見て、

iPod touch は、
デバイスにカメラが搭載されているかどうかなどを JavaScript から判別できれば、もう少し機種を絞り込めそうなのだけれど、そんな方法は無いのだろうなぁ。

まあ実用的にはここまで細かく機種名を判別する意味も必要性も無いのですが。

カテゴリ: