uniapp的IOS中首次进入,无网络问题
该问题是由于ios中app打开,ios会弹出网络选项,必须选择后才会有网络,即便此时手机是有网络也是一样
定义网络状态变量
javascript
data() {
return {
networkStatusChangeListener: null,
};
},
实际应用
javascript
if (isIOS()) {
this.setIosNextWork();
} else {
// 进行网络请求
}
async setIosNextWork() {
try {
const { networkType } = await getNetworkType();
if (networkType != "none") {
// 进行网络请求
}
} catch (error) {
console.log("getNetworkType error", error);
}
try {
this.networkStatusChangeListener = async (res) => {
if (res.isConnected) {
// 进行网络请求
}
};
onNetworkStatusChange(this.networkStatusChangeListener);
} catch (error) {
console.log("onNetworkStatusChange error", error);
}
},
beforeDestroy() {
if (isIOS() && this.networkStatusChangeListener) {
offNetworkStatusChange(this.networkStatusChangeListener);
}
},
封装网络状态模块js
javascript
/**
* 获取网络状态
* @description 获取网络状态
* @returns {Promise<any>}
*/
const getNetworkType = () => {
return new Promise((resolve, reject) => {
uni.getNetworkType({
success: (res) => {
resolve(res);
},
fail: (err) => {
reject(err);
},
});
});
};
/**
* 监听网络状态变化
* @description 监听网络状态变化
* @param {Function} CALLBACK 回调函数
* @returns {void}
*/
const onNetworkStatusChange = (CALLBACK) => {
uni.onNetworkStatusChange(CALLBACK);
};
/**
* 取消监听网络状态变化
* @description 取消监听网络状态变化
* @param {Function} CALLBACK 回调函数
* @returns {void}
*/
const offNetworkStatusChange = (CALLBACK) => {
uni.offNetworkStatusChange(CALLBACK);
};