在项目中,网络不好或者断网的时候,可能中间会出现个黑点 ,影响美观,且没有提示,也影响用户的使用。所以我们得获取一下当前的网络状态,在没有网络的时候给与用户提示会更好一些。

uniapp官网也提供了对应的方法:uni.getNetworkType(OBJECT)

这里将其封装为公共的方法,然后在 App.vue 中的onShow方法中调用 ,这样在app的每个页面都可以获取到网络状态

function isHaveNetwork() {
  uni.getNetworkType({
    success: res => {
      if (res.networkType == 'none') {
        uni.showModal({
          title: '网络不给力~',
          content: '是否重新连接',
          showCancel: true,
          confirmText: '是',
          cancelText: '不了',
          success: res => {
            if (res.confirm) {
              setTimeout(() => {
                isHaveNetwork()   //再次判断
              }, 200)
            }
          }
        });
      }
    },
    fail: err => console.error('调用失败'),
    complete: () => { }
  })
}

其中  networkType 可能获取到的值:

networkType 有效值

说明平台差异说明
wifiwifi 网络
2g2g 网络
3g3g 网络
4g4g 网络
5g5g 网络
ethernet有线网络App
unknownAndroid 下不常见的网络类型
none网络

其他细节请参考官网,上面已贴。 

然后App.vue调用上面方法

onShow: function() {
  console.log('App Show')
  this.$utils.isHaveNetwork() // 获取当前网络状态
}

当然这个不是监听网络状态,而是写在了全局App.vue中的onShow方法中,也就是刚显示进入页面的时候会去获取当前的网络状态。如果想要时刻监听的话,也有对应的方法:uni.onNetworkStatusChange(CALLBACK),然后通过uni.offNetworkStatusChange(CALLBACK)取消监听,具体细节可以去官网看下咯~

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐