Невозможно вернуть IP-адрес, используя функцию getIPAddress реакционной-нативной-устройства-информации

Мне нужно вернуть IP-адрес устройства, на котором запущено приложение React Native (приложение для Android Smart TV). Я использую ответную нативную информацию об устройстве, которая позволила мне получить модель, производителя и операционную систему. Однако я не могу получить IP-адрес.

Это мой код

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

Однако на переднем конце он выглядит как [объект объекта]. Я вижу в консоли, что это возвращает объект, как это:

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)}

Кто-нибудь сталкивался с этой проблемой раньше?

3 ответа

Я использовал библиотеку ниже: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
});

Вы в основном назначаете обещание от DeviceInfo.getIPAddress() к стоимости deviceInfo, Вы не можете вернуть значение из вашего .then как ты сейчас делаешь.

Чтобы преодолеть это, вы должны сделать что-то вроде этого, это будет ждать разрешения обещания и позволит вам получить IP-адрес. Помните, что вам нужно обернуть await в try/catch как это можно бросить.

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

Поскольку он возвращает обещание, попробуйте поместить внутрь асинхронную функцию и попытаться получить результат.

Бывший:

      const getIpAddress = async()=>{
const ip = await DeviceInfo.getIPAddress();
console.log(ip);
return ip;
}

Надеюсь, поможет. Спасибо.

Другие вопросы по тегам