Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Parcourez l’exemple. Parcourir l'exemple
Cet article présente comment vous pouvez utiliser l'interface IConnectivity de .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 changements de 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, une configuration spécifique à la plateforme est requise.
- Android
- iOS/Mac Catalyst
- Windows
L'autorisation AccessNetworkState est obligatoire et doit être configurée dans le projet Android. Cela peut être ajouté de la manière suivante :
Ajoutez l’autorisation basée sur l’assembly :
Ouvrez le fichier Platforms/Android/MainApplication.cs et ajoutez les attributs d'assemblage 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
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 [propriété de connectivité de MAUI](https://learn.microsoft.com/dotnet/api/microsoft.maui.networking.iconnectivity.networkaccess#microsoft-maui-networking-iconnectivity-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.
- Network — 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 connectivité n’est disponible.
- Unknown : impossible de déterminer la connectivité 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 est déclenché :
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 forcément disponible. En raison du fonctionnement de la connectivité sur chaque plateforme, elle ne peut garantir qu’une connexion est disponible. Par exemple, l’appareil peut être connecté à un réseau Wi-Fi, mais le routeur est déconnecté d’Internet. Dans ce cas, Internet peut être signalé, bien qu'une connexion active ne soit pas disponible.