Skip to content

[Bug]: ConnectivityResult.none is reported when using Microsoft Tunnel for Microsoft Intune #3872

@xphc-swissas

Description

@xphc-swissas

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. 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

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

bool _isNetworkAvailable(List<ConnectivityResult> 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<ConnectivityResult> result) {
  _debug('Connectivity: new connectivity type: ${result.join(',')}');
  if (_isNetworkAvailable(result)) {
    // start ping
  }
  else {
    // stop ping
  }
});

Logs

2026-06-10T14:10:37.797384	DEBUG	Main	Connectivity: new connectivity type: ConnectivityResult.none

Flutter Doctor

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

  • I searched issues in this repository and couldn't find such bug/problem
  • I Google'd a solution and I couldn't find it
  • I searched on StackOverflow for a solution and I couldn't find it
  • I read the README.md file of the plugin
  • I'm using the latest version of the plugin
  • All dependencies are up to date with flutter pub upgrade
  • I did a flutter clean
  • I tried running the example project

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingtriage

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions