Détecter la connectivité réseau

Effectué

Les appareils mobiles utilisent les technologies Wi-Fi et cellulaires pour se connecter à Internet. À cause de cette dépendance, vos utilisateurs peuvent perdre leur connexion Internet lorsqu’ils utilisent votre application. Si vous n’ajoutez pas de code pour vous protéger contre ce problème éventuel, votre application peut ne plus répondre et nuire à l’expérience de vos utilisateurs.

Dans cette unité, vous protégez votre application en détectant les pertes de connexion Internet de vos utilisateurs. Ces informations deviennent importantes lorsque nous commençons à utiliser des services web REST.

Pourquoi détecter la connectivité réseau sur des applications mobiles ?

Il est important de détecter l’existence d’une connexion Internet sur une application mobile, car les appareils mobiles peuvent fréquemment perdre leur connexion. Ce problème peut être dû à une mauvaise couverture par un fournisseur de services réseau, ou à un environnement où la réception est limitée ou inexistante, par exemple, un tunnel, une vallée profonde ou la haute montagne. De plus, il y a différents types de connectivité réseau. Si vous vous trouvez dans un environnement qui fournit une connectivité Wi-Fi, vous disposez généralement d’une bande passante plus élevée que si vous dépendez d’un réseau cellulaire. Même si vous pouvez toujours vous connecter à Internet, certaines opérations, telles que le streaming de contenu vidéo, peuvent être plus lentes (et coûteuses) via une liaison cellulaire par rapport à une connexion Wi-Fi.

Étant donné que les appareils mobiles rencontrent ces désagréments, vous devez écrire du code pour les en protéger. Dans le cas contraire, quand votre application essaie d’effectuer des opérations utilisant Internet, elle risque de ne plus répondre.

Vous voulez aussi fournir une bonne expérience utilisateur quand votre application ne parvient pas à se connecter à Internet. Si votre application cesse de fonctionner parce qu’il n’y a plus de service Internet, vos utilisateurs seront probablement déconcertés. La meilleure chose à faire est de fournir des informations à vos utilisateurs. Avertissez-les de l’absence de connexion Internet et indiquez-leur que, sans elle, votre application peut ne pas fonctionner de manière optimale. L’image suivante en montre un exemple :

Screenshot of an app showing a warning about limited network connectivity.

Dans cet exemple, le développeur d’applications informe l’utilisateur qu’il n’a pas de connexion Internet et qu’il doit essayer de se connecter au réseau Wi-Fi.

Détecter la connectivité réseau

Pour vérifier la connectivité réseau dans une application .NET MAUI, utilisez la classe Connectivity. Cette classe expose une propriété appelée NetworkAccess ainsi qu’un événement nommé ConnectivityChanged. Vous pouvez utiliser ces membres pour détecter les modifications apportées au réseau.

Vous accédez à la propriété NetworkAccess via une autre propriété appelée Current. Par ce mécanisme, Connectivity accède à l’implémentation spécifique de la plateforme.

La propriété NetworkAccess retourne une valeur de l’énumération NetworkAccess. L’énumération a cinq valeurs : ConstrainedInternet, Internet, Local, None et Unknown. Si la propriété NetworkAccess retourne une valeur NetworkAccess.None, alors vous savez que vous n’avez pas de connexion à Internet et qu’il est préférable de ne pas exécuter de code réseau. Ce mécanisme est portable sur les plateformes. Le code suivant montre un exemple :

if (Connectivity.Current.NetworkAccess == NetworkAccess.None)
{
    ...
}

L’événement ConnectivityChanged vous permet également de déterminer si l’appareil est connecté à Internet. L’événement ConnectivityChanged est déclenché automatiquement à chaque changement du réseau. Par exemple, si vous démarrez avec une connexion réseau active et que vous la perdez à un moment donné, l’événement ConnectivityChanged est déclenché pour vous informer de ce changement. L’un des paramètres passés au gestionnaire d’événements ConnectivityChanged est un objet ConnectivityChangedEventArgs. Cet objet contient une propriété appelée IsConnected. Vous pouvez utiliser la propriété IsConnected pour déterminer si vous êtes connecté à Internet. Voici un exemple :

Connectivity.Current.ConnectivityChanged += Connectivity_ConnectivityChanged;
...
void Connectivity_ConnectivityChanged(object sender, ConnectivityChangedEventArgs  e)
{
    bool stillConnected = e.IsConnected;
}

L’événement ConnectivityChanged vous permet d’écrire des applications qui peuvent détecter un changement de l’état du réseau et adapter automatiquement les fonctionnalités disponibles selon les différents environnements.

Contrôle des connaissances

1.

Parmi les réponses suivantes, quelle est la meilleure raison de vérifier si vous êtes connecté à Internet avant d’exécuter du code réseau ?

2.

Supposons que vous développez une application qu’un utilisateur peut exécuter pendant ses déplacements en voiture. Si la voiture entre dans un tunnel, l’appareil risque de perdre la connectivité Internet. Quel membre de la classe Connectivity devez-vous utiliser pour détecter le changement de la connectivité réseau ?