You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Native(Expo Go)获取WiFi与移动网络dBm信号强度问题

React Native 获取WiFi及移动网络dBm信号强度解决方案

1. 获取dBm格式的WiFi信号强度

@react-native-community/netinfo 返回的strength是0-100的百分比值,并非dBm格式的信号强度(dBm通常为负数,范围-100到0,数值越接近0信号越强)。要获取dBm,可使用专门的WiFi信息库react-native-wifi-reborn(支持安卓、iOS):

安装依赖

npm install react-native-wifi-reborn
# 或 yarn add react-native-wifi-reborn

使用示例

import React, { useState, useEffect } from 'react';
import { Text, View } from 'react-native';
import WifiManager from 'react-native-wifi-reborn';

const App = () => {
  const [wifiDbm, setWifiDbm] = useState(null);

  useEffect(() => {
    const interval = setInterval(async () => {
      try {
        // 获取当前WiFi的dBm信号强度
        const signalStrength = await WifiManager.getCurrentWifiSignalStrength();
        setWifiDbm(signalStrength);
      } catch (error) {
        console.error('获取WiFi信息失败:', error);
      }
    }, 10000);

    return () => clearInterval(interval);
  }, []);

  return (
    <View>
      <Text>WiFi信号强度(dBm): {wifiDbm}</Text>
    </View>
  );
};

export default App;

权限配置:

  • 安卓:在AndroidManifest.xml添加
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
  • iOS:在Info.plist添加
<key>NSLocationWhenInUseUsageDescription</key>
<string>需要位置权限获取WiFi信息</string>

2. 获取移动网络的信号强度及信息

NetInfo无法获取移动网络的信号细节,需使用蜂窝网络信息库react-native-cell-info:

安装依赖

npm install react-native-cell-info
# 或 yarn add react-native-cell-info

使用示例

import React, { useState, useEffect } from 'react';
import { Text, View } from 'react-native';
import CellInfo from 'react-native-cell-info';

const App = () => {
  const [mobileDbm, setMobileDbm] = useState(null);

  useEffect(() => {
    const interval = setInterval(async () => {
      try {
        const cellData = await CellInfo.getCellInfo();
        if (cellData.length > 0) {
          // 取首个蜂窝网络的dBm值
          setMobileDbm(cellData[0].dbm);
        }
      } catch (error) {
        console.error('获取移动网络信息失败:', error);
      }
    }, 10000);

    return () => clearInterval(interval);
  }, []);

  return (
    <View>
      <Text>移动网络信号强度(dBm): {mobileDbm}</Text>
    </View>
  );
};

export default App;

权限配置:

  • 安卓:在AndroidManifest.xml添加
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
  • iOS:在Info.plist添加
<key>NSLocationWhenInUseUsageDescription</key>
<string>需要位置权限获取蜂窝网络信息</string>

原生实现补充(无需第三方库)

  • 安卓:通过TelephonyManager获取SignalStrength,调用getDbm()直接获取dBm值。
  • iOS:通过CoreTelephony框架的CTTelephonyNetworkInfo获取信号强度数值(0-31),转换为dBm的公式为:dBm = -120 + signalStrength。

内容的提问来源于stack exchange,提问作者Laurent

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 18:48:19