g***@sina.com
g***@sina.com
  • 发布:2019-10-12 14:01
  • 更新:2023-03-24 16:33
  • 阅读:13500

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

分类:HTML5+

获取手机设备的相关信息,如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都是异步的,所以在使用的时候要注意时机

运行结果:
Image text

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

0 关注 分享

要回复文章请先登录注册

张小逗

张小逗

无法获取IP地址地址啊
2023-03-24 16:33
4***@qq.com

4***@qq.com

ios完全无法获取吗?
2022-02-16 16:58
4***@qq.com

4***@qq.com

uniapp怎么获取
2021-07-23 17:53
crab

crab

uniapp 怎么获取当前网络的ip
2020-12-24 08:53
8***@qq.com

8***@qq.com

你好,我复制不能用呀 ,文件我也从网上down下来了,但是本地就是不行呀
2020-05-30 14:36