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