无法使用react-native-device-info的getIPAddress()返回IP地址

时间:2019-08-19 10:23:44

标签: android react-native react-native-device-info

我需要返回运行React Native应用程序(Android智能电视应用程序)的设备的IP地址。我正在使用react-native-device-info,这使我可以获得模型,制造商和操作系统。但是我无法获取IP地址。

这是我的代码

deviceInfo = DeviceInfo.getIPAddress().then(ip => {
  return ip;
});

但是在前端,它显示为[object Object]。我可以在控制台中看到它正在返回这样的对象:

wifi:
  _40: 0
  _55: null
  _65: 0
  _72: null

我希望只返回正确IP地址的字符串。

我还在AndroidManifest.xml中添加了正确的权限。

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

还应注意,我正在通过value: ${JSON.stringify(deviceInfo)}

传递信息

有人遇到过这个问题吗?

2 个答案:

答案 0 :(得分:1)

我使用了以下库: https://www.npmjs.com/package/react-native-network-info

它工作正常,下面是代码:

// Get IPv4 IP (priority: WiFi first, cellular second)
NetworkInfo.getIPV4Address().then(ipv4Address => {
  console.log(ipv4Address); //result e.g 192.168.1.100
});

答案 1 :(得分:0)

您基本上是将DeviceInfo.getIPAddress()中的承诺分配给值deviceInfo。您目前无法从.then返回值。

要克服此问题,您应该执行类似的操作,这将等待promise解决并允许您获取IP地址。请记住,您需要将await包装在try/catch中,因为它可能会抛出。

try {
 let ipAddress = await DeviceInfo.getIPAddress()
 // now use the ipAddress
} catch (error) {
  console.log(error)
}