iOS とAndroid の判別
スマートフォンのOS が、iOS かAndroid かをプログラムで判別します。
OS を判別するプログラムは、OS に依存するプログラムを作る際に、必要になります。
(注)OS に依存するプログラム
OS が異なることで、動作が異なるプログラム
userAgent は、使用しているコンピュータ種別やブラウザなどを特定する情報です。
Web サイトにアクセスする際には、相手Webサイトに、HTTP のuserAgent ヘッダとして送信します【1】。
userAgent の中身の項目は以下となります【2】。
userAgent = appCodeName/appVersion number (Platform; Security; OS-or-CPU;
Localization; rv: revision-version-number) product/productSub
Application-Name Application-Name-version
ここで、userAgent の項目の中に、「OS-or-CPU」があることが分かります。
また、userAgent の使い方は、以下となります【2】。
var ua = window.navigator.userAgent;
【参照1】Wikipedia: ユーザーエージェント
【参照2】MDN: window.navigator.userAgent
userAgent の具体例
userAgent の具体例をいくつか見てみます。
- iPhone の場合
Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_1 like Mac OS X)
AppleWebKit/601.x.x (KHTML, like Gecho) GSA/x.x.x
Mobile Safari/601.x
- Android スマホの場合
Mozilla/5.0 (Linux; Android5.1.1; KFFOWI)
AppleWebKit/537.x (KHTML, like Gecko) Silk/57.x.x like
Chrome/57.x.x Safari/537.x
- iPhone の場合、userAgent 中に文字列「iPhone」があります。
- Android スマホの場合、userAgent 中に文字列「Android」があります。
iOS かAndsroid かの判別方法
Web アプリが動くコンピュータのOS が、iOS かAndroid かを判別するには、userAgent 中の特定な文字列の有無を判別すればよいことが分かります。
userAgent 中に以下の文字列があることで、各OS を判別します。
- iOS : 文字列「iPhone」もしくは「iPad」、「iPod」
- Android: 文字列「Android」
プログラム
プログラム1
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>iOS_or_Android</title> <script> var os_name; // iOS, Android window.onload = function() { var ele = document.getElementById("output"); // var ua = navigator.userAgent; if (ua.match(/Android/)) { os_name = "Android"; } else if (ua.match(/iPhone|iPad|iPod/)){ os_name = "iOS"; } else { os_name = "unknown"; } ele.innerHTML = "OS = " + os_name; } </script> </head> <body> <output id="output"></output> </body> </html>
プログラムの説明
window.onload 関数
プログラム1 の12 行目で、userAgent を変数ua に代入しています。
13 行目で、ua 中に、文字列「Android」の有無を調べています。
15 行目で、ua 中に、文字列「iPhone」「iPad」「iPod」の有無を調べています。