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 para 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ó de 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

Encontre mais vídeos sobre o Xamarin no Channel 9 e no YouTube.