Détecter la connectivité réseau
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 :
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.