提供对设备网络的访问(例如其 IP 地址、MAC 地址和飞行模式状态)的库。
expo-network
提供有关设备网络的有用信息,例如 IP 地址、MAC 地址和飞行模式状态。
¥expo-network
provides useful information about the device's network such as its IP address, MAC address, and airplane mode status.
¥Installation
-
npx expo install expo-network
If you are installing this in an existing React Native app (bare workflow), start by installing expo
in your project. Then, follow the additional instructions as mentioned by library's README under "Installation in bare React Native projects" section.
¥Configuration
在 Android 上,该模块需要访问网络和 Wi-Fi 状态的权限。权限 ACCESS_NETWORK_STATE
和 ACCESS_WIFI_STATE
是自动添加的。
¥On Android, this module requires permissions to access the network and Wi-Fi state. The permissions ACCESS_NETWORK_STATE
and ACCESS_WIFI_STATE
are added automatically.
import * as Network from 'expo-network';
Network.getIpAddressAsync()
Gets the device's current IPv4 address. Returns 0.0.0.0
if the IP address could not be retrieved.
On web, this method uses the third-party ipify service
to get the
public IP address of the current device.
Promise<string>
A Promise
that fulfils with a string
of the current IP address of the device's main
network interface. Can only be IPv4 address.
Example
await Network.getIpAddressAsync();
// "92.168.32.44"
Network.getNetworkStateAsync()
Gets the device's current network connection state.
On web, navigator.connection.type
is not available on browsers. So if there is an active
network connection, the field type
returns NetworkStateType.UNKNOWN
. Otherwise, it returns
NetworkStateType.NONE
.
A Promise
that fulfils with a NetworkState
object.
Example
await Network.getNetworkStateAsync();
// {
// type: NetworkStateType.CELLULAR,
// isConnected: true,
// isInternetReachable: true,
// }
Network.isAirplaneModeEnabledAsync()
Tells if the device is in airplane mode.
Promise<boolean>
Returns a Promise
that fulfils with a boolean
value for whether the device is in
airplane mode or not.
Example
await Network.isAirplaneModeEnabledAsync();
// false
NetworkState
Name | Type | Description |
---|---|---|
isConnected (optional) | boolean | If there is an active network connection. Note that this does not mean that internet is reachable.
This field is |
isInternetReachable (optional) | boolean | If the internet is reachable with the currently active network connection. On Android, this
depends on |
type (optional) | NetworkStateType | A |
CELLULAR
NetworkStateType.CELLULAR = "CELLULAR"
Active network connection over mobile data or DUN-specific
mobile connection when setting an upstream connection for tethering.
¥Error codes
代码 | 描述 |
---|---|
ERR_NETWORK_IP_ADDRESS | 在 Android 上,尝试在 getIpAddressAsync 中访问 WifiManager 时可能存在未知的 Wi-Fi 主机。在 iOS 上,无法检索网络接口。 |
ERR_NETWORK_UNDEFINED_INTERFACE | 未定义的 interfaceName 作为参数传递到 getMacAddressAsync 中。 |
ERR_NETWORK_SOCKET_EXCEPTION | 创建或访问 getMacAddressAsync 中的套接字时遇到错误。 |
ERR_NETWORK_INVALID_PERMISSION_INTERNET | getMacAddressAsync 中存在 android.permission.ACCESS_WIFI_STATE 的无效权限。 |
ERR_NETWORK_NO_ACCESS_NETWORKINFO | 无法访问网络信息 |