我需要返回运行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)}
有人遇到过这个问题吗?
答案 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)
}