JavaScriptプログラム

iOS とAndroid の判別

スマートフォンのOS が、iOS かAndroid かをプログラムで判別します。
OS を判別するプログラムは、OS に依存するプログラムを作る際に、必要になります。

(注)OS に依存するプログラム
OS が異なることで、動作が異なるプログラム

 

 

window.navigator.userAgent

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」の有無を調べています。

 

 

 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です