Connectivity
Este artigo descreve como você pode usar a interface .NET Multi-platform App UI (.NET MAUI) IConnectivity para inspecionar a acessibilidade de rede do dispositivo. A conexão de rede pode ter acesso à internet. Os dispositivos também contêm diferentes tipos de conexões de rede, como Bluetooth, celular ou Wi-Fi. A IConnectivity
interface tem um evento para monitorar alterações no estado de conexão dos dispositivos.
A implementação padrão da interface está disponível por meio da IConnectivity
Connectivity.Current propriedade. A interface e Connectivity
a IConnectivity
classe estão contidas no Microsoft.Maui.Networking
namespace.
Introdução
Para acessar a funcionalidade, a Connectivity seguinte configuração específica da plataforma é necessária.
A permissão AccessNetworkState
é necessária e deve ser configurada no projeto do Android. Isso pode ser usado das seguintes maneiras:
Adicione a permissão baseada em assembly:
Abra o arquivo Platforms/Android/MainApplication.cs e adicione os seguintes atributos de assembly após
using
as diretivas:[assembly: UsesPermission(Android.Manifest.Permission.AccessNetworkState)]
- ou -
Atualize o manifesto do Android:
Abra o arquivo Platforms/Android/AndroidManifest.xml e adicione o
manifest
seguinte no nó:<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
- ou -
Atualize o manifesto do Android no editor de manifesto:
No Visual Studio, clique duas vezes no arquivo Platforms/Android/AndroidManifest.xml para abrir o editor de manifesto do Android. Em seguida, em Permissões necessárias, verifique a permissão ACCESS_NETWORK_STATE. Isso atualizará automaticamente o arquivo AndroidManifest.xml.
Usando Connectivity
Você pode determinar o escopo da rede atual verificando a NetworkAccess propriedade.
NetworkAccess accessType = Connectivity.Current.NetworkAccess;
if (accessType == NetworkAccess.Internet)
{
// Connection to internet is available
}
O acesso à rede se enquadra às seguintes categorias:
- Internet — Acesso local e à Internet.
- ConstrainedInternet — Acesso limitado à Internet. Esse valor significa que há um portal cativo, onde o acesso local a um portal da Web é fornecido. Uma vez que o portal é usado para fornecer credenciais de autenticação, o acesso à Internet é concedido.
- Local — Apenas acesso à rede local.
- None — Não há conectividade disponível.
- Unknown — Não é possível determinar a conectividade com a Internet.
É possível verificar que tipo de perfil de conexão o dispositivo está usando ativamente:
IEnumerable<ConnectionProfile> profiles = Connectivity.Current.ConnectionProfiles;
if (profiles.Contains(ConnectionProfile.WiFi))
{
// Active Wi-Fi connection.
}
Sempre que o perfil de conexão ou o acesso à rede for alterado, o ConnectivityChanged evento será gerado:
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();
}
}
Limitações
É importante saber que é possível que Internet seja relatado por NetworkAccess , mas o acesso total à web não está disponível. Por causa de como a conectividade funciona em cada plataforma, ela só pode garantir que uma conexão esteja disponível. Por exemplo, o dispositivo pode estar conectado a uma rede Wi-Fi, mas o roteador está desconectado da internet. Neste caso Internet
, pode ser relatado, mas uma conexão ativa não está disponível.
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de