Невозможно вернуть 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;
}
Надеюсь, поможет. Спасибо.