Xamarin.Essentials:Conectividade
A classe Connectivity permite monitorar alterações em condições de rede do dispositivo, verificar o acesso da rede atual e como ele está conectado no momento.
Introdução
Para começar a usar essa API, leia o guia de introdução para Xamarin.Essentials garantir que a biblioteca esteja instalada e configurada corretamente em seus projetos.
Para acessar a funcionalidade Connectivity, a 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:
Abra o arquivo AssemblyInfo.cs na pasta Propriedades e adicione:
[assembly: UsesPermission(Android.Manifest.Permission.AccessNetworkState)]
OU Atualize o Manifesto do Android:
Abra o arquivo AndroidManifest.xml na pasta Propriedades e adicione o seguinte dentro do nó do manifesto.
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
Ou clique com o botão direito do mouse no projeto do Android e abra as propriedades do projeto. Em Manifesto do Android, localize a área Permissões necessárias: e marque a permissão Acessar estado da rede. Isso atualizará automaticamente o arquivo AndroidManifest.xml.
Uso de Connectivity
Adicione uma referência a Xamarin.Essentials em sua classe:
using Xamarin.Essentials;
Verifique o acesso à rede atual:
var current = Connectivity.NetworkAccess;
if (current == NetworkAccess.Internet)
{
// Connection to internet is available
}
O acesso à rede se enquadra às seguintes categorias:
- Internet – acesso local e à Internet.
- ConstrainedInternet – acesso limitado à Internet. Indica a conectividade do portal cativo, em que o acesso local a um portal da Web é fornecido, mas o acesso à Internet exige que credenciais específicas sejam fornecidas através de um portal.
- Local – apenas acesso local à rede.
- Nenhum – nenhuma conectividade disponível.
- Desconhecido – 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:
var profiles = Connectivity.ConnectionProfiles;
if (profiles.Contains(ConnectionProfile.WiFi))
{
// Active Wi-Fi connection.
}
Sempre que o perfil de conexão ou o acesso à rede mudar, você poderá receber um evento quando houver um acionamento:
public class ConnectivityTest
{
public ConnectivityTest()
{
// Register for connectivity changes, be sure to unsubscribe when finished
Connectivity.ConnectivityChanged += Connectivity_ConnectivityChanged;
}
void Connectivity_ConnectivityChanged(object sender, ConnectivityChangedEventArgs e)
{
var access = e.NetworkAccess;
var profiles = e.ConnectionProfiles;
}
}
Limitações
É importante observar que é possível que Internet
seja reportado pelo NetworkAccess
. No entanto, o acesso completo à Web não estará disponível. Devido ao funcionamento da conectividade em cada plataforma, só é possível garantir que uma conexão disponível. Por exemplo, o dispositivo pode estar conectado a uma rede Wi-Fi, mas o roteador está desconectado da Internet. Nesta instância, a Internet pode ser reportada, mas uma conexão ativa não estará disponível.
API
Vídeo relacionados
Encontre mais vídeos sobre o Xamarin no Channel 9 e no YouTube.