Back to Uni App

Network Status Change

docs/api/network-status-change.md

2.3.39.5 KB
Original Source
<!-- ## uni.onNetworkStatusChange(callback) @onnetworkstatuschange -->

::: sourceCode

uni.onNetworkStatusChange(listener) @onnetworkstatuschange

GitCode: https://gitcode.com/dcloud/uni-api/tree/alpha/uni_modules/uni-getNetworkType

GitHub: https://github.com/dcloudio/uni-api/tree/alpha/uni_modules/uni-getNetworkType

:::

监听网络状态变化

onNetworkStatusChange 兼容性

Web微信小程序AndroidiOSiOS uni-app x UTS 插件HarmonyOSHarmonyOS(Vapor)
4.04.414.814.814.814.615.0

参数

名称类型必填默认值兼容性描述
listener(result: OnNetworkStatusChangeCallbackResult) => void-Web: -; 微信小程序: -; Android: -; iOS: -; HarmonyOS: -

OnNetworkStatusChangeCallbackResult 的属性值 @onnetworkstatuschangecallbackresult-values

名称类型必备默认值兼容性描述
isConnectedboolean-Web: 4.0; 微信小程序: 4.41; Android: 4.81; Android uni-app x UTS 插件: 4.81; iOS: 4.81; iOS uni-app x UTS 插件: 4.81; HarmonyOS: 4.61; HarmonyOS(Vapor): 5.0当前是否有网络连接
networkTypestring-Web: 4.0; 微信小程序: 4.41; Android: 4.81; Android uni-app x UTS 插件: 4.81; iOS: 4.81; iOS uni-app x UTS 插件: 4.81; HarmonyOS: 4.61; HarmonyOS(Vapor): 5.0网络类型(wifi、2g、3g、4g、5g、unknown、none)

返回值

类型
number
<!-- UTSAPIJSON.onNetworkStatusChange.example -->

参见

<!-- ## uni.offNetworkStatusChange(callback) @offnetworkstatuschange -->

::: sourceCode

uni.offNetworkStatusChange(listener?) @offnetworkstatuschange

GitCode: https://gitcode.com/dcloud/uni-api/tree/alpha/uni_modules/uni-getNetworkType

GitHub: https://github.com/dcloudio/uni-api/tree/alpha/uni_modules/uni-getNetworkType

:::

取消监听网络状态变化

offNetworkStatusChange 兼容性

Web微信小程序AndroidiOSiOS uni-app x UTS 插件HarmonyOSHarmonyOS(Vapor)
4.04.414.814.814.814.615.0

参数

名称类型必填默认值兼容性描述
listenernumber | (result: OnNetworkStatusChangeCallbackResult) => void-Web: -; 微信小程序: -; Android: -; iOS: -; HarmonyOS: -

OnNetworkStatusChangeCallbackResult 的属性值 @onnetworkstatuschangecallbackresult-values

名称类型必备默认值兼容性描述
isConnectedboolean-Web: 4.0; 微信小程序: 4.41; Android: 4.81; Android uni-app x UTS 插件: 4.81; iOS: 4.81; iOS uni-app x UTS 插件: 4.81; HarmonyOS: 4.61; HarmonyOS(Vapor): 5.0当前是否有网络连接
networkTypestring-Web: 4.0; 微信小程序: 4.41; Android: 4.81; Android uni-app x UTS 插件: 4.81; iOS: 4.81; iOS uni-app x UTS 插件: 4.81; HarmonyOS: 4.61; HarmonyOS(Vapor): 5.0网络类型(wifi、2g、3g、4g、5g、unknown、none)
<!-- UTSAPIJSON.offNetworkStatusChange.example -->

参见

示例

示例为hello uni-app x alpha分支,与最新HBuilderX Alpha版同步。与最新正式版同步的master分支示例另见 ::: preview https://hellouniappx.dcloud.net.cn/web/#/pages/API/network-status-change/network-status-change

appRedirect https://hellouniappx.dcloud.net.cn/appredirect.html?path=pages/API/network-status-change/network-status-change

示例

vue
<template>
  <page-head title="networkStatusChange"></page-head>
  <view class="uni-list-cell-padding status-box">
    <text class="uni-title-text">网络状态</text>
    <view class="uni-row uni-common-mt">
      <text class="uni-hello-text">是否连接:</text>
      <text>{{ isConnected ? '已连接' : '未连接' }}</text>
    </view>
    <view class="uni-row uni-common-mt">
      <text class="uni-hello-text">网络类型:</text>
      <text>{{ networkType }}</text>
    </view>
    <view class="uni-row uni-common-mt">
      <text class="uni-hello-text">监听状态:</text>
      <text>{{ listenStatus }}</text>
    </view>
  </view>
  <view class="uni-list-cell-padding uni-common-mt">
    <button type="primary" @click="startListen">开始监听</button>
    <button type="default" class="uni-common-mt" @click="stopListen">停止监听</button>
  </view>
</template>

<script lang="uts" setup>
  const isConnected = ref(false)
  const networkType = ref('unknown')
  const listenStatus = ref('未监听')
  const networkCallback = ref<((result : OnNetworkStatusChangeCallbackResult) => void) | null>(null)
  // 获取当前网络状态
  const getCurrentNetworkStatus = () => {
    uni.getNetworkType({
      success: (res) => {
        networkType.value = res.networkType
        isConnected.value = res.networkType != 'none'
      },
      fail: () => {
        console.log('获取网络状态失败')
        networkType.value = 'unknown'
        isConnected.value = false
      }
    })
  }
  // 开始监听
  const startListen = () => {
    if (networkCallback.value != null) {
      listenStatus.value = '正在监听'
      return
    }
    networkCallback.value = (result : OnNetworkStatusChangeCallbackResult) => {
      console.log('网络状态: ', result);
      isConnected.value = result.isConnected
      networkType.value = result.networkType
      if (!result.isConnected) {
        networkType.value = 'none'
      }
    }
    uni.onNetworkStatusChange(networkCallback.value)
    // console.log('开始监听网络状态')
    listenStatus.value = '正在监听'
  }
  // 停止监听
  const stopListen = () => {
    if (networkCallback.value == null) {
      listenStatus.value = '未监听'
      return
    }
    uni.offNetworkStatusChange(networkCallback.value)
    networkCallback.value = null
    // console.log('停止监听网络状态')
    listenStatus.value = '停止监听'
  }

  onLoad(() => {
    getCurrentNetworkStatus()
  })
  onUnload(() => {
    stopListen()
  })
</script>

<style>
  .status-box {
    background-color: #FFFFFF;
    margin: 0 20px;
  }
</style>

:::

通用类型

GeneralCallbackResult

名称类型必备默认值兼容性描述
errMsgstring-Web: -; 微信小程序: 4.41; Android: -; iOS: -; HarmonyOS: -错误信息