H5获取手机设备信息、app版本信息、ip地址

获取手机设备的相关信息,如IMEI、IMSI、型号、厂商等。通过plus.device获取设备信息管理对象。
获取当前运行环境信息、与其它程序进行通讯等。通过plus.runtime可获取运行环境管理对象。

直接上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() {
                //获取系统名称
                var name = plus.os.name;
                VM.list.push({
                    "title": "系统名称",
                    "value": name
                })
                //获取系统版本
                var version = plus.os.version;
                VM.list.push({
                    "title": "系统版本",
                    "value": version
                })
                //设备型号
                VM.list.push({
                    "title": "设备型号",
                    "value": plus.device.model
                })
                //获取生产厂商
                var vendor2 = plus.device.vendor
                VM.list.push({
                    "title": "生产厂商",
                    "value": vendor2
                })
                //获取系统供应商
                var vendor = plus.os.vendor
                VM.list.push({
                    "title": "系统供应商",
                    "value": vendor
                })
                //获取系统语言信息
                var language = plus.os.language;
                VM.list.push({
                    "title": "系统语言信息",
                    "value": language
                })

                var types = {}; //网络类型
                types[plus.networkinfo.CONNECTION_UNKNOW] = "未知";
                types[plus.networkinfo.CONNECTION_NONE] = "未连接网络";
                types[plus.networkinfo.CONNECTION_ETHERNET] = "有线网络";
                types[plus.networkinfo.CONNECTION_WIFI] = "WiFi网络";
                types[plus.networkinfo.CONNECTION_CELL2G] = "2G蜂窝网络";
                types[plus.networkinfo.CONNECTION_CELL3G] = "3G蜂窝网络";
                types[plus.networkinfo.CONNECTION_CELL4G] = "4G蜂窝网络";
                var network = types[plus.networkinfo.getCurrentType()];
                VM.list.push({
                    "title": "网络类型",
                    "value": network
                })
                //获取设备的唯一标示
                plus.device.getInfo({
                    success: function(e) {
                        VM.list.push({
                            "title": "国际移动设备身份码imei",
                            "value": e.imei
                        })
                        VM.list.push({
                            "title": "国际移动用户识别码imsi",
                            "value": e.imsi
                        })
                        VM.list.push({
                            "title": "设备的唯一标识",
                            "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 类型 )设备的国际移动设备身份码

如果设备不支持或无法获取(如用户未授权)则返回空字符串。 如果设备存在多个身份码,则以“,”字符分割拼接,如“862470039452950,862470039452943”。
平台支持

Android - ALL (支持): 需要用户授权才能获取,如果用户拒绝获取设备信息则返回空字符串。
iOS - ALL (不支持): 无法获取设备身份码,返回空字符串。

imsi: (Array[ String ] 类型 )设备的国际移动用户识别码

字符串数组类型,获取设备上插入SIM的国际移动设备身份码。 如果设备支持多卡模式则返回所有SIM身份码。 如果设备不支持或没有插入SIM卡则返回空数组。
平台支持

Android - ALL (支持): 如果无法获取国际移动用户标识(如用户未授权)则返回空数组。
iOS - ALL (不支持): 无法获取设备移动用户识别码,返回空数组。

uuid: (String 类型 )设备标识

设备的唯一标识号。
平台支持

Android - ALL (支持): 与设备的imei号一致。 注意:如果无法获取设备imei则使用设备wifi的mac地址,如果无法获取设备mac地址则随机生成设备标识号(不同App在同一台设备上获取的值一致)。
iOS - ALL (不支持): 根据包名随机生成的设备标识号。 注意:设备重置(刷机)后会重新生成

其他的属性和方法,参考html5plus官网:
http://www.html5plus.org/doc/zh_cn/device.html

欢迎转载,但是请注明出处

Github
个人博客

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,117评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,328评论 1 293
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,839评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,007评论 0 206
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,384评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,629评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,880评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,593评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,313评论 1 243
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,575评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,066评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,392评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,052评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,082评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,844评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,662评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,575评论 2 270