app.vue中代码
<script>
import Vue from 'vue';
export default {
data() {
return {
timerid: 0
}
},
onLaunch() {
// #ifdef APP-PLUS
this.network()
// #endif
// #ifdef H5
this.initFunc()
// #endif
},
onError() {
this.$control.msg('出现错误!');
// #ifdef APP-PLUS
uni.getNetworkType({
success: res => {
if (res.networkType == 'none' || res.networkType == 'unknown') {
this.$control.msg('网络错误');
setTimeout(() => {
plus.runtime.restart();
}, 2000);
}
}
});
// #endif
},
onShow() {
// 启动或重启即时通讯
this.$store.dispatch('chat/start');
},
onHide() {
// 断开即时通讯
this.$store.dispatch('chat/close');
},
methods: {
initFunc() {
// 检测客户端更新
this.$store.dispatch('update/update');
// 仅首次打开一次性加载数据
this.$store.dispatch('common/init');
// 同步购物车 本地 & 网络
this.$store.dispatch('cart/get');
// 同步 动态数据
this.$store.dispatch('statistics/get');
// uni.$emit('globalVarUpdated', this.hasNetworkPermission);
},
delTimer() {
if (this.timerid > 0) {
clearInterval(this.timerid)
this.timerid = 0;
}
},
network() {
console.log('检查权限开始')
var i = 0;
this.timerid = setInterval(() => {
i++;
console.log(1)
// 判断网络类型
uni.getNetworkType({
success: res => {
console.log(res.networkType + i)
console.log(2)
uni.showToast({
title: "网络类型:" + res.networkType + i,
icon: 'error'
})
if (res.networkType == 'none' || res.networkType == 'unknown') {
if (i >= 5) {
uni.showToast({
title: "网络类型:" + res.networkType,
icon: 'error'
})
this.delTimer()
}
} else {
if (res.networkType != 'wifi') {
this.$control.msg('当前使用非WIFI环境,请注意流量使用');
}
this.delTimer()
this.initFunc()
}
}
});
console.log(3)
}, 2000)
console.log("获取权限结束" + this.timerid)
},
}
};
</script>
3 个回复
7***@qq.com (作者)
这是调试 显示的getNetworkType 获取的网络状态
DCloud_iOS_WZT
未授权网络权限的时候是获取不到网络类型的 uni.onNetworkStatusChange 可以通过这个api监听网络状态
7***@qq.com (作者)
你看第一张图,是获取了网络权限的
2024-01-07 19:19
DCloud_iOS_WZT
回复 7***@qq.com: 你getNetworkType 是在用户点击之后并且 有网络之后才调用的吗?
2024-01-08 12:05
7***@qq.com (作者)
回复 DCloud_iOS_WZT: 是的,我可以确定是先同意使用网络,后通过定时器5次调用getNetworkType类型都是unknown,我有录屏,这里上传不了
2024-01-08 17:31
DCloud_iOS_WZT
回复 7***@qq.com: uni.onNetworkStatusChange 用这个api监听状态看下是啥
2024-01-08 17:35
7***@qq.com (作者)
回复 DCloud_iOS_WZT: 看下图
2024-01-10 10:49
DCloud_iOS_WZT
回复 7***@qq.com: 感觉还是你代码getNetworkType 获取时机问题 首次请求未授权 要么你自己监听网络状态 要么给用户一个可以刷新页面的按钮
2024-01-10 11:37
DCloud_iOS_WZT
回复 7***@qq.com: 另外getNetworkType尽量不要在app.vue内部调用,尽量放到首页页面加载完成后
2024-01-10 11:42
7***@qq.com (作者)
回复 DCloud_iOS_WZT: 别的手机都可以获取正确网络类型的,从原来在首页获取getNetworkType类型就有问题,后面为了调试才写的app.vue ,同意允许使用网络后,10多秒获取10多次都是unknown
2024-01-11 15:26
7***@qq.com (作者)
回复 DCloud_iOS_WZT: 能不能处理一下这个bug啊,好难
2024-01-15 10:25
7***@qq.com (作者)
客户现在没空配合,型号13 pro ,系统是ios17.1.2