Before Qt 5.9.3, Qt shipped with two types of bearer plugin (on macOS and Windows):
- Generic, which enumerates network interfaces
- WiFi, which enumerates WiFi networks
The WiFi enumeration turned out to be disruptive, and the WiFi plugin has now been disabled. This is not believed to have any effect on bearer management, since in practice the Generic plugin was preferred. See
However, the Generic plugin is also not working optimally due to the fact that it tends to always report that there is at least one active interface - even if the system does not have general network connectivity. This is due to the presence of special-purpose interfaces such as tunneling interfaces and the Apple Wireless Direct Link (iDevice peer-to-peer) interface.
We should develop new bearer plugins that use native connectivity APIs, and replace the generic plugin on the Apple platforms and Windows.
The end goal is to make QNetworkAccessManager::networkAccessible() work. It should return "Accessible" if the system is connected to either ethernet or wifi. It should return NotAccessible if the device is in airplane mode. (The function goes as far as the local network, and does not determine if the internet is reachable.)
- Windows:INetworkListManager::get_IsConnected, INetworkEvents::NetworkConnectivityChanged
- macOS,iOS: Reachability