fluttercommunity / fluttercommunity/plus_plugins
[Bug]: ConnectivityResult.none is reported when using Microsoft Tunnel for Microsoft Intune
- Dominant language
- Dart
- Stars
- 1.9k
- Forks
- 1.3k
- PR merge metrics
- No merged PRs in 30d
Description
### Platform
iOS 26.4
### Plugin
connectivity_plus
### Version
6.1.5
### Flutter SDK
3.35.4
### Steps to reproduce
A customer is running our app on iOS using [Microsoft Tunnel for Microsoft Intune](https://learn.microsoft.com/en-us/intune/device-security/microsoft-tunnel/overview). This Microsoft service is supposed to start a VPN service on the device as soon as there is a network request from the app it controls.
Our app has the following logic when it starts up: if the connectivity_plus plugin reports some connectivity, we start a ping service and show an online/offline banner depending on whether we can ping our server or not.
When Microsoft Tunnel is in use, `Connectivity.none` is reported and our ping service doesn't start, which in turn does not turn on the VPN.
For the end user, they will not be able to login on the first attempt, the network request will fail with "no route to host". This failed request will however start the VPN service. On a second attempt, the login then works. Our customer rightfully argues that the login should work on the first attempt.
Looking at the `connectivityFrom` method in `PathMonitorConnectivityProvider`, I noticed that it does not consider `path.status = .requiresConnection`. I assume this is the issue and it should be handled also by the plugin.
[NWPath.Status.requiresConnection](https://developer.apple.com/documentation/network/nwpath/status-swift.enum/requiresconnection)
The workaround for us is to adapt our app to ping regardless of the connectivity status however we believe this could be covered by the plugin directly. Thanks for considering.
Internal request reference: 462000.
### Code Sample
```dart
bool _isNetworkAvailable(List result) {
return result.contains(ConnectivityResult.mobile) ||
result.contains(ConnectivityResult.wifi) ||
result.contains(ConnectivityResult.ethernet) ||
result.contains(ConnectivityResult.vpn) ||
result.contains(ConnectivityResult.bluetooth) ||
result.contains(ConnectivityResult.other);
}
Connectivity connectivity = Connectivity();
connectivity.onConnectivityChanged.listen((List result) {
_debug('Connectivity: new connectivity type: ${result.join(',')}');
if (_isNetworkAvailable(result)) {
// start ping
}
else {
// stop ping
}
});
```
### Logs
```shell
2026-06-10T14:10:37.797384 DEBUG Main Connectivity: new connectivity type: ConnectivityResult.none
```
### Flutter Doctor
```shell
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 3.35.4, on macOS 26.4.1 25E253 darwin-arm64, locale
en-US)
[✓] Android toolchain - develop for Android devices (Android SDK version 36.1.0)
[✓] Xcode - develop for iOS and macOS (Xcode 26.4)
[✗] Chrome - develop for the web (Cannot find Chrome executable at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome)
! Cannot find Chrome. Try setting CHROME_EXECUTABLE to a Chrome executable.
[✓] Android Studio (version 2022.3)
[✓] Proxy Configuration
[✓] Connected device (1 available)
[✓] Network resources
```
### Checklist before submitting a bug
- [x] I searched issues in this repository and couldn't find such bug/problem
- [x] I Google'd a solution and I couldn't find it
- [x] I searched on StackOverflow for a solution and I couldn't find it
- [x] I read the README.md file of the plugin
- [x] I'm using the latest version of the plugin
- [x] All dependencies are up to date with `flutter pub upgrade`
- [x] I did a `flutter clean`
- [x] I tried running the example project
Contributor guide
Assessment
This issue has not been assessed yet.