uniApp打包iOSApp初次加载,无网络问题

uniApp打包IOSAPP初次加载,无网络问题解决

描述

使用uniApp打包IOSApp发布后,在初次进入APP时,会有网络连接权限获取的过程,然而,在获取权限时,调用接口的过程并没有停下来。所以会需要自己手动再次调用接口才行。

解决方案

可以在对接口封装时,添加uniApp的监听网络变化的APIuni.onNetworkStatusChange,获取网络变化时刷新当前页面。

实现代码

// An highlighted block
const BASE_URL = "这里是地址"
export const request = ( url='', data={}, method="GET" ) => {
	let reLaunchPage = 1;   //给个标志,预防多次刷新
	const header_tmp = {
		"token": "这里是token"
	};
	return new Promise((resolve,reject) => {
		//监听网络变化
		uni.onNetworkStatusChange(function (res) {
		// res.isConnected == true  网络连接 ;res.networkType是网络类型2G、3G、4G、WIFI等,可以通过判断类型,反馈网络情况的好坏
			if ( res.isConnected && res.networkType != 'none' ) {
				console.log('网络已连接, 欢迎回来!');
				setTimeout(() => {
					// 刷新当前页
					if ( reLaunchPage == 1 ) {
						reLaunchPage += 1;
						const page = getCurrentPages();  //获取当前页面的路由信息
						const { options, route } = page[page.length - 1];
						const path = `/${route}?${qsRouterStringify(options)}`;
						uni.reLaunch({ url: path });//从新跳转当前页面
						return false;
					}
				}, 1500)
			}
		})
		// 连接网络后,继续调用接口
		uni.request({
			url: BASE_URL + url,
			method: method,
			data: data,
			header: header_tmp, 
			success: (res) => {
				//自己写处理方法
			},
			fail: (err) => {
				//自己写处理方法
			},
			complete (res) {
				//自己写处理方法
			},
		});
	});
};

export const qsStringify = ( obj ) => { // 格式转换: { a: 'b', b: 'c' } => 'a=b&b=c'
	return Object.keys(obj).map((key) => `${key}=${obj[key]}`).join("&");
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值