码哥驾到

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 822|回复: 0

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

[复制链接]

185

主题

217

帖子

1016

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1016

最佳新人活跃会员热心会员推广达人宣传达人灌水之王突出贡献优秀版主荣誉管理论坛元老

发表于 2022-2-24 23:56:17 | 显示全部楼层 |阅读模式
获取手机设备的相关信息,如IMEI、IMSI、型号、厂商等。通过plus.device获取设备信息管理对象。
获取当前运行环境信息、与其它程序进行通讯等。通过plus.runtime可获取运行环境管理对象。
直接上demo

  1. <!doctype html>
  2. <html>
  3.     <head>
  4.         <meta charset="utf-8">
  5.         <title></title>
  6.         <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
  7.         <link href="../../css/mui.min.css" rel="stylesheet" />
  8.         <script src="../../js/mui.js"></script>
  9.         <script src="../../js/vue.js"></script>
  10.         <style>
  11.             body{max-width: 750px; min-width: 320px; margin: 0 auto; background-color: #F5F5F5;overflow-x: hidden;
  12.                 font-family: -apple-system,Helvetica,sans-serif;}
  13.             div{font-size: .26rem; color: #474747;line-height: 2;}
  14.             span{font-size: .28rem; color: #D1021F;}
  15.         </style>
  16.         <script>
  17.             (function(doc, win) {
  18.                 var w = document.documentElement.clientWidth;
  19.                 if (w > 750) {
  20.                     w = 750
  21.                 } else if (w < 320) {
  22.                     w = 320
  23.                 }
  24.                 var f = w / 750 * 100 + "px";
  25.                 document.documentElement.style.fontSize = f;
  26.                 var docEl = doc.documentElement,
  27.                     resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize',
  28.                     recalc = function() {
  29.                         var clientWidth = docEl.clientWidth > 750 ? 750 : docEl.clientWidth;
  30.                         if (clientWidth > 750) {
  31.                             clientWidth = 750
  32.                         } else if (clientWidth < 320) {
  33.                             clientWidth = 320
  34.                         }
  35.                         if (!clientWidth) return;
  36.                         docEl.style.fontSize = 100 * (clientWidth / 750) + 'px';
  37.                     };
  38.             
  39.                 if (!doc.addEventListener) return;
  40.                 win.addEventListener(resizeEvt, recalc, false);
  41.                 doc.addEventListener('DOMContentLoaded', recalc, false);
  42.             })(document, window);
  43.         </script>
  44.     </head>

  45.     <body>
  46.         <header class="mui-bar mui-bar-nav">
  47.             <h1 class="mui-title">我的手机信息</h1>
  48.         </header>
  49.         <div id="content" class="mui-content mui-content-padded">
  50.             <div class="mui-text-left" v-for="item in list">
  51.                 {{item.title}}
  52.                 <span>
  53.                     {{item.value}}
  54.                 </span>
  55.             </div>
  56.         </div>

  57.         <script type="text/javascript">
  58.             var spans = document.getElementsByTagName('span');
  59.             var VM = new Vue({
  60.                 el: ".mui-content",
  61.                 data: {
  62.                     list:[]
  63.                 },
  64.                
  65.             })
  66.             mui.plusReady(function() {
  67.                 //获取系统名称
  68.                 var name = plus.os.name;
  69.                 VM.list.push({
  70.                     "title": "系统名称",
  71.                     "value": name
  72.                 })
  73.                 //获取系统版本
  74.                 var version = plus.os.version;
  75.                 VM.list.push({
  76.                     "title": "系统版本",
  77.                     "value": version
  78.                 })
  79.                 //设备型号
  80.                 VM.list.push({
  81.                     "title": "设备型号",
  82.                     "value": plus.device.model
  83.                 })
  84.                 //获取生产厂商
  85.                 var vendor2 = plus.device.vendor
  86.                 VM.list.push({
  87.                     "title": "生产厂商",
  88.                     "value": vendor2
  89.                 })
  90.                 //获取系统供应商
  91.                 var vendor = plus.os.vendor
  92.                 VM.list.push({
  93.                     "title": "系统供应商",
  94.                     "value": vendor
  95.                 })
  96.                 //获取系统语言信息
  97.                 var language = plus.os.language;
  98.                 VM.list.push({
  99.                     "title": "系统语言信息",
  100.                     "value": language
  101.                 })

  102.                 var types = {}; //网络类型
  103.                 types[plus.networkinfo.CONNECTION_UNKNOW] = "未知";
  104.                 types[plus.networkinfo.CONNECTION_NONE] = "未连接网络";
  105.                 types[plus.networkinfo.CONNECTION_ETHERNET] = "有线网络";
  106.                 types[plus.networkinfo.CONNECTION_WIFI] = "WiFi网络";
  107.                 types[plus.networkinfo.CONNECTION_CELL2G] = "2G蜂窝网络";
  108.                 types[plus.networkinfo.CONNECTION_CELL3G] = "3G蜂窝网络";
  109.                 types[plus.networkinfo.CONNECTION_CELL4G] = "4G蜂窝网络";
  110.                 var network = types[plus.networkinfo.getCurrentType()];
  111.                 VM.list.push({
  112.                     "title": "网络类型",
  113.                     "value": network
  114.                 })
  115.                 //获取设备的唯一标示
  116.                 plus.device.getInfo({
  117.                     success: function(e) {
  118.                         VM.list.push({
  119.                             "title": "国际移动设备身份码imei",
  120.                             "value": e.imei
  121.                         })
  122.                         VM.list.push({
  123.                             "title": "国际移动用户识别码imsi",
  124.                             "value": e.imsi
  125.                         })
  126.                         VM.list.push({
  127.                             "title": "设备的唯一标识",
  128.                             "value": e.uuid
  129.                         })
  130.                     },
  131.                     fail: function(e) {
  132.                         console.log('getDeviceInfo failed: ' + JSON.stringify(e));
  133.                     }
  134.                 });
  135.                 //获取APP版本信息
  136.                 plus.runtime.getProperty(plus.runtime.appid, function(inf) {
  137.                     var ver = inf.version;
  138.                     VM.list.push({
  139.                         "title": "APP名称",
  140.                         "value": inf.name
  141.                     })
  142.                     VM.list.push({
  143.                         "title": "APP版本信息",
  144.                         "value": "版本:"+inf.version+";版本号:"+inf.versionCode
  145.                     })
  146.                     console.log(JSON.stringify(inf))
  147.                 })
  148.                
  149.                
  150.             });
  151.             //获取IP地址信息
  152.             function addScriptTag(src) {
  153.                 var script = document.createElement('script');
  154.                 script.setAttribute("type", "text/javascript");
  155.                 script.src = src;
  156.                 document.body.appendChild(script);
  157.             }
  158.             
  159.             function foo(data) {
  160.                 var json = data.data[0];
  161.                
  162.                 VM.list.push({
  163.                     "title": "位置",
  164.                     "value": json.location
  165.                 })
  166.                 VM.list.push({
  167.                     "title": "IP地址",
  168.                     "value": json.origip
  169.                 })
  170.                 console.log("IPInfo:"+ JSON.stringify(json));
  171.             };
  172.             window.onload = function() {
  173.                 addScriptTag(
  174.                     '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'
  175.                 );
  176.             }
  177.         </script>
  178.     </body>
  179. </html>
复制代码
注意:
获取IP地址和plus.device.getInfo都是异步的,所以在使用的时候要注意时机
效果图:
Android和IOS获取imei、imsi、uuid时须知:
imei: (String 类型 )设备的国际移动设备身份码
如果设备不支持或无法获取(如用户未授权)则返回空字符串。 如果设备存在多个身份码,则以“,”字符分割拼接,如“862470039452950,862470039452943”。
平台支持



如果设备不支持或无法获取(如用户未授权)则返回空字符串。 如果设备存在多个身份码,则以“,”字符分割拼接,如“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







回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|码哥驾到 ( 京ICP备15044914号-1 )

GMT+8, 2022-5-25 11:02 , Processed in 0.140625 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表