H5獲取手機設(shè)備信息、app版本信息值戳、ip地址

獲取手機設(shè)備的相關(guān)信息炉爆,如IMEI堕虹、IMSI、型號赴捞、廠商等逼裆。通過plus.device獲取設(shè)備信息管理對象。
獲取當前運行環(huán)境信息赦政、與其它程序進行通訊等胜宇。通過plus.runtime可獲取運行環(huán)境管理對象恢着。

直接上demo

<!doctype html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
        <link href="../../css/mui.min.css" rel="stylesheet" />
        <script src="../../js/mui.js"></script>
        <script src="../../js/vue.js"></script>
        <style>
            body{max-width: 750px; min-width: 320px; margin: 0 auto; background-color: #F5F5F5;overflow-x: hidden;
                font-family: -apple-system,Helvetica,sans-serif;}
            div{font-size: .26rem; color: #474747;line-height: 2;}
            span{font-size: .28rem; color: #D1021F;}
        </style>
        <script>
            (function(doc, win) {
                var w = document.documentElement.clientWidth;
                if (w > 750) {
                    w = 750
                } else if (w < 320) {
                    w = 320
                }
                var f = w / 750 * 100 + "px";
                document.documentElement.style.fontSize = f;
                var docEl = doc.documentElement,
                    resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize',
                    recalc = function() {
                        var clientWidth = docEl.clientWidth > 750 ? 750 : docEl.clientWidth;
                        if (clientWidth > 750) {
                            clientWidth = 750
                        } else if (clientWidth < 320) {
                            clientWidth = 320
                        }
                        if (!clientWidth) return;
                        docEl.style.fontSize = 100 * (clientWidth / 750) + 'px';
                    };
            
                if (!doc.addEventListener) return;
                win.addEventListener(resizeEvt, recalc, false);
                doc.addEventListener('DOMContentLoaded', recalc, false);
            })(document, window);
        </script>
    </head>

    <body>
        <header class="mui-bar mui-bar-nav">
            <h1 class="mui-title">我的手機信息</h1>
        </header>
        <div id="content" class="mui-content mui-content-padded">
            <div class="mui-text-left" v-for="item in list">
                {{item.title}}
                <span>
                    {{item.value}}
                </span>
            </div>
        </div>

        <script type="text/javascript">
            var spans = document.getElementsByTagName('span');
            var VM = new Vue({
                el: ".mui-content",
                data: {
                    list:[]
                },
                
            })
            mui.plusReady(function() {
                //獲取系統(tǒng)名稱
                var name = plus.os.name;
                VM.list.push({
                    "title": "系統(tǒng)名稱",
                    "value": name
                })
                //獲取系統(tǒng)版本
                var version = plus.os.version;
                VM.list.push({
                    "title": "系統(tǒng)版本",
                    "value": version
                })
                //設(shè)備型號
                VM.list.push({
                    "title": "設(shè)備型號",
                    "value": plus.device.model
                })
                //獲取生產(chǎn)廠商
                var vendor2 = plus.device.vendor
                VM.list.push({
                    "title": "生產(chǎn)廠商",
                    "value": vendor2
                })
                //獲取系統(tǒng)供應(yīng)商
                var vendor = plus.os.vendor
                VM.list.push({
                    "title": "系統(tǒng)供應(yīng)商",
                    "value": vendor
                })
                //獲取系統(tǒng)語言信息
                var language = plus.os.language;
                VM.list.push({
                    "title": "系統(tǒng)語言信息",
                    "value": language
                })

                var types = {}; //網(wǎng)絡(luò)類型
                types[plus.networkinfo.CONNECTION_UNKNOW] = "未知";
                types[plus.networkinfo.CONNECTION_NONE] = "未連接網(wǎng)絡(luò)";
                types[plus.networkinfo.CONNECTION_ETHERNET] = "有線網(wǎng)絡(luò)";
                types[plus.networkinfo.CONNECTION_WIFI] = "WiFi網(wǎng)絡(luò)";
                types[plus.networkinfo.CONNECTION_CELL2G] = "2G蜂窩網(wǎng)絡(luò)";
                types[plus.networkinfo.CONNECTION_CELL3G] = "3G蜂窩網(wǎng)絡(luò)";
                types[plus.networkinfo.CONNECTION_CELL4G] = "4G蜂窩網(wǎng)絡(luò)";
                var network = types[plus.networkinfo.getCurrentType()];
                VM.list.push({
                    "title": "網(wǎng)絡(luò)類型",
                    "value": network
                })
                //獲取設(shè)備的唯一標示
                plus.device.getInfo({
                    success: function(e) {
                        VM.list.push({
                            "title": "國際移動設(shè)備身份碼imei",
                            "value": e.imei
                        })
                        VM.list.push({
                            "title": "國際移動用戶識別碼imsi",
                            "value": e.imsi
                        })
                        VM.list.push({
                            "title": "設(shè)備的唯一標識",
                            "value": e.uuid
                        })
                    },
                    fail: function(e) {
                        console.log('getDeviceInfo failed: ' + JSON.stringify(e));
                    }
                });
                //獲取APP版本信息
                plus.runtime.getProperty(plus.runtime.appid, function(inf) {
                    var ver = inf.version;
                    VM.list.push({
                        "title": "APP名稱",
                        "value": inf.name
                    })
                    VM.list.push({
                        "title": "APP版本信息",
                        "value": "版本:"+inf.version+"掰派;版本號:"+inf.versionCode
                    })
                    console.log(JSON.stringify(inf))
                })
                
                
            });
            //獲取IP地址信息
            function addScriptTag(src) {
                var script = document.createElement('script');
                script.setAttribute("type", "text/javascript");
                script.src = src;
                document.body.appendChild(script);
            }
            
            function foo(data) {
                var json = data.data[0];
                
                VM.list.push({
                    "title": "位置",
                    "value": json.location
                })
                VM.list.push({
                    "title": "IP地址",
                    "value": json.origip
                })
                console.log("IPInfo:"+ JSON.stringify(json));
            };
            window.onload = function() {
                addScriptTag(
                    'https://sp0.baidu.com/8aQDcjqpAAV3otqbppnN2DJv/api.php?query=ip&co=&resource_id=6006&t=1562124098965&ie=utf8&oe=gbk&cb=foo&format=json&tn=baidu'
                );
            }
        </script>
    </body>
</html>

注意:
獲取IP地址和plus.device.getInfo都是異步的,所以在使用的時候要注意時機

效果圖:


Android.jpg

Android和IOS獲取imei盏求、imsi、uuid時須知:

imei: (String 類型 )設(shè)備的國際移動設(shè)備身份碼

如果設(shè)備不支持或無法獲纫诿摺(如用戶未授權(quán))則返回空字符串。 如果設(shè)備存在多個身份碼纳像,則以“,”字符分割拼接,如“862470039452950,862470039452943”竟趾。
平臺支持

Android - ALL (支持): 需要用戶授權(quán)才能獲取,如果用戶拒絕獲取設(shè)備信息則返回空字符串岔帽。
iOS - ALL (不支持): 無法獲取設(shè)備身份碼玫鸟,返回空字符串犀勒。

imsi: (Array[ String ] 類型 )設(shè)備的國際移動用戶識別碼

字符串數(shù)組類型,獲取設(shè)備上插入SIM的國際移動設(shè)備身份碼贾费。 如果設(shè)備支持多卡模式則返回所有SIM身份碼钦购。 如果設(shè)備不支持或沒有插入SIM卡則返回空數(shù)組褂萧。
平臺支持

Android - ALL (支持): 如果無法獲取國際移動用戶標識(如用戶未授權(quán))則返回空數(shù)組押桃。
iOS - ALL (不支持): 無法獲取設(shè)備移動用戶識別碼导犹,返回空數(shù)組羡忘。

uuid: (String 類型 )設(shè)備標識

設(shè)備的唯一標識號。
平臺支持

Android - ALL (支持): 與設(shè)備的imei號一致磕昼。 注意:如果無法獲取設(shè)備imei則使用設(shè)備wifi的mac地址,如果無法獲取設(shè)備mac地址則隨機生成設(shè)備標識號(不同App在同一臺設(shè)備上獲取的值一致)掰烟。
iOS - ALL (不支持): 根據(jù)包名隨機生成的設(shè)備標識號。 注意:設(shè)備重置(刷機)后會重新生成

其他的屬性和方法纫骑,參考html5plus官網(wǎng):
http://www.html5plus.org/doc/zh_cn/device.html

歡迎轉(zhuǎn)載蝎亚,但是請注明出處

Github
個人博客

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末先馆,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子煤墙,更是在濱河造成了極大的恐慌梅惯,老刑警劉巖仿野,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異脚作,居然都是意外死亡葫哗,警方通過查閱死者的電腦和手機球涛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來亿扁,“玉大人捺典,你說我怎么就攤上這事从祝〗蠹海” “怎么了哄褒?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長呐赡。 經(jīng)常有香客問我,道長链嘀,這世上最難降的妖魔是什么萌狂? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮怀泊,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘霹琼。我一直安慰自己,他們只是感情好枣申,可當我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著忠藤,像睡著了一般挟伙。 火紅的嫁衣襯著肌膚如雪模孩。 梳的紋絲不亂的頭發(fā)上尖阔,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天榨咐,我揣著相機與錄音介却,去河邊找鬼块茁。 笑死筷笨,一個胖子當著我的面吹牛龟劲,可吹牛的內(nèi)容都是我干的胃夏。 我是一名探鬼主播昌跌,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼仰禀,長吁一口氣:“原來是場噩夢啊……” “哼蚕愤!你這毒婦竟也來了答恶?” 一聲冷哼從身側(cè)響起萍诱,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤悬嗓,失蹤者是張志新(化名)和其女友劉穎裕坊,沒想到半個月后包竹,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡周瞎,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了酱讶。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡彼乌,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出慰照,到底是詐尸還是另有隱情,我是刑警寧澤焚挠,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站蝌衔,受9級特大地震影響榛泛,放射性物質(zhì)發(fā)生泄漏噩斟。R本人自食惡果不足惜曹锨,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一剃允、第九天 我趴在偏房一處隱蔽的房頂上張望沛简。 院中可真熱鬧斥废,春花似錦椒楣、人聲如沸牡肉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至饲窿,卻和暖如春煌寇,著一層夾襖步出監(jiān)牢的瞬間逾雄,已是汗流浹背阀溶。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留淌哟,地道東北人迹卢。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓徒仓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親誊垢。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,713評論 2 354