Partager via


Connectivity

Parcourez l’exemple. Parcourir l'exemple

Cet article présent comment vous pouvez utiliser l’interface IConnectivity .NET Multi-Platform App UI (.NET MAUI) pour inspecter l’accessibilité réseau de l’appareil. La connexion réseau peut avoir accès à Internet. Les appareils contiennent également différents types de connexions réseau, telles que Bluetooth, cellulaire ou Wi-Fi. L’interface IConnectivity a un événement pour surveiller les modifications apportées à l’état de connexion des appareils.

L’implémentation par défaut de l’interface IConnectivity est disponible via la propriété Connectivity.Current. L’espace de noms Microsoft.Maui.Networking contient à la fois l’interface IConnectivity et la classe Connectivity.

Démarrage

Pour accéder à la fonctionnalité Connectivity, la configuration spécifique à la plateforme suivante est requise.

L’autorisation AccessNetworkState est obligatoire, et doit être configurée dans le projet Android. Vous pouvez le faire de plusieurs façons, comme indiqué ci-dessous :

  • Ajoutez l’autorisation basée sur l’assembly :

    Ouvrez le fichier Platforms/Android/MainApplication.cs et ajoutez les attributs d’assembly suivants après les directives using :

    [assembly: UsesPermission(Android.Manifest.Permission.AccessNetworkState)]
    

    - ou -

  • Mettez à jour le manifeste Android :

    Ouvrez le fichier Plateformes/Android/AndroidManifest.xml et ajoutez le code suivant dans le nœud manifest :

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    

    - ou -

  • Mettez à jour le manifeste Android dans l’éditeur de manifeste :

    Dans Visual Studio, double-cliquez sur le fichier Plateformes/Android/AndroidManifest.xml pour ouvrir l’éditeur de manifeste Android. Ensuite, sous Autorisations requises vérifiez l’autorisation ACCESS_NETWORK_STATE. Cela met automatiquement à jour le fichier AndroidManifest.xml.

Utilisation de Connectivity

Vous pouvez déterminer l’étendue du réseau actuel en vérifiant la propriété NetworkAccess.

NetworkAccess accessType = Connectivity.Current.NetworkAccess;

if (accessType == NetworkAccess.Internet)
{
    // Connection to internet is available
}

L’accès réseau est réparti dans les catégories suivantes :

  • Internet : accès local et Internet.
  • ConstrainedInternet — Accès Internet limité Cette valeur signifie qu’il existe un portail captif, où l’accès local à un portail web est fourni. Une fois le portail utilisé pour fournir des informations d’identification d’authentification, l’accès Internet est accordé.
  • Local : accès au réseau local uniquement.
  • None : aucune connectivity disponible.
  • Unknown : impossible de déterminer la connectivity Internet.

Vous pouvez vérifier le type de profil de connexion utilisé activement par l’appareil avec ce qui suit :

IEnumerable<ConnectionProfile> profiles = Connectivity.Current.ConnectionProfiles;

if (profiles.Contains(ConnectionProfile.WiFi))
{
    // Active Wi-Fi connection.
}

Chaque fois que le profil de connexion ou l’accès réseau change, l’événement ConnectivityChanged se déclenche :

public class ConnectivityTest
{
    public ConnectivityTest() =>
        Connectivity.ConnectivityChanged += Connectivity_ConnectivityChanged;

    ~ConnectivityTest() =>
        Connectivity.ConnectivityChanged -= Connectivity_ConnectivityChanged;

    void Connectivity_ConnectivityChanged(object sender, ConnectivityChangedEventArgs e)
    {
        if (e.NetworkAccess == NetworkAccess.ConstrainedInternet)
            Console.WriteLine("Internet access is available but is limited.");

        else if (e.NetworkAccess != NetworkAccess.Internet)
            Console.WriteLine("Internet access has been lost.");

        // Log each active connection
        Console.Write("Connections active: ");

        foreach (var item in e.ConnectionProfiles)
        {
            switch (item)
            {
                case ConnectionProfile.Bluetooth:
                    Console.Write("Bluetooth");
                    break;
                case ConnectionProfile.Cellular:
                    Console.Write("Cell");
                    break;
                case ConnectionProfile.Ethernet:
                    Console.Write("Ethernet");
                    break;
                case ConnectionProfile.WiFi:
                    Console.Write("WiFi");
                    break;
                default:
                    break;
            }
        }

        Console.WriteLine();
    }
}

Limites

Il est important de noter qu’il est possible que Internet soit signalé par NetworkAccess mais l’accès complet au web n’est pas disponible. En raison du fonctionnement de la connectivity sur chaque plateforme, seul le fait qu’une connexion est disponible peut être garanti. Par exemple, l’appareil peut être connecté à un réseau Wi-Fi, mais le routeur est déconnecté d’Internet. Dans cet exemple, Internet peut être signalé, mais une connexion active n’est pas disponible.