mui技术点01.手机网络连接的判断

# 问题说明

手机未连接网络,app访问后台接口时出现错误。

 

# 解决方案

每个画面初始时,判断网络是否连接,网络如果处于断网阶段,弹出窗口信息直接退出app,或者画面显示[未联网]消息提示,提示用户刷新网络(比如:点击刷新按钮,或者下拉等操作)。

 

# 详细代码

## 直接退出app

1. 检测是否连接网络

//mui检测是否连接网络
function getSysInfo() {
	//  var str = "";
	//  str += "名称:" + plus.os.name + "\n";
	//  str += "版本:" + plus.os.version + "\n";
	//  str += "语言:" + plus.os.language + "\n";
	//  str += "厂商:" + plus.os.vendor + "\n";
	//  str += "网络类型:";

	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 str = types[plus.networkinfo.getCurrentType()];
	if (str == '未知' || str == '未连接网络') {
		return false;
	} else {
		return true;
	}

}

2. 调用及处理

mui.plusReady(function() {

	//如果未连接网络,退出app(针对mui框架)
	if (!(getSysInfo())) {
		alert('网络连接失败,请退出并重置网络!');
		plus.runtime.quit();//退出app(针对mui框架)
		return;
	}
});

 

## 画面显示提示按钮,让用户手动刷新

1. 点击按钮,进行画面刷新

mui技术点01.手机网络连接的判断

 详细代码

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<meta name="viewport"
		content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
	<title>网络未连接</title>
	<link href="css/mui.min.css" rel="stylesheet" />
	<style>
		.mui-btn {
			display: block;
			width: 60px;
			margin: 10px auto;
		}

		#info {
			padding: 10px 5px;
		}
	</style>
</head>
<body>

	<header class="mui-bar mui-bar-nav">
		<h1 class="mui-title">按钮点击刷新</h1>
	</header>

	<div id="content" class="mui-content">
		<div class="mui-content-padded" style="margin: 50px;text-align: center;">
			<div id="info"></div>
			<button id="button" type="button" class="mui-btn mui-btn-outlined">刷新</button>
		</div>
	</div>

	<script src="js/mui.min.js"></script>
	<script type="text/javascript" charset="utf-8">
		mui.init();
		var info = document.getElementById("info");
		(function($) {
			mui.toast('画面初始化!');
			info.innerText = '网络未连接,请连接网络后刷新!';
		})(mui);

		document.getElementById("button").addEventListener('tap', function() {
			location.reload();
		});
	</script>
</body>
</html>

2. 下划画面刷新

mui技术点01.手机网络连接的判断

 

详细代码

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<meta name="viewport"
		content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
	<title>网络未连接</title>
	<link href="css/mui.min.css" rel="stylesheet" />
	<style>
		#info {
			padding: 10px 5px;
		}
	</style>
</head>
<body>

	<header class="mui-bar mui-bar-nav">
		<h1 class="mui-title">画面下拉刷新</h1>
	</header>

	<div id="content" class="mui-content">
		<div class="mui-content-padded" style="margin: 50px;text-align: center;">
			<div id="info"></div>
		</div>
	</div>

	<script src="js/mui.min.js"></script>
	<script type="text/javascript" charset="utf-8">
		var info = document.getElementById("info");
		mui.init({
		pullRefresh: {
				container: "#content", //待刷新区域标识,querySelector能定位的css选择器均可,比如:id、.class等
				down: { //下拉刷新
					style: 'circle', //必选,下拉刷新样式,目前支持原生5+ ‘circle’ 样式
					height: 50, //可选,默认50.触发下拉刷新拖动距离,
					auto: false, //可选,默认false.首次加载自动下拉刷新一次
					contentdown: "下拉可以刷新", //可选,在下拉可刷新状态时,下拉刷新控件上显示的标题内容
					contentover: "释放立即刷新", //可选,在释放可刷新状态时,下拉刷新控件上显示的标题内容
					contentrefresh: "正在刷新...", //可选,正在刷新状态时,下拉刷新控件上显示的标题内容
					callback: function() { //必选,刷新函数,根据具体业务来编写,比如通过ajax从服务器获取新数据;
						//模拟向服务器获取数据的等待时间
						sleep(1000);
						location.reload();
					}
				}
			}
		});

		(function($) {
			info.innerText = '网络未连接,请网络连接后,下拉刷新进行页面刷新!';
			mui.toast('画面初始化!');
		})(mui);

		//模拟线程等待,ms:单位毫秒
		function sleep(ms) {
			return new Promise(resolve => setTimeout(resolve, ms));
		}
	</script>
</body>
</html>

 

## 注意

1. 内置浏览器技术实现,但手机上未必实现,调研的结果在手机上验证之后,在进行项目代码合并。

2. 关于下拉刷新详细的参数,请参照官网的文档说明:https://dev.dcloud.net.cn/mui/pulldown/

 

上一篇:React props 校验


下一篇:FlinkCDC-Springboot拉取数据写入Kafka