Neste artigo vou iniciar a utilização do Xamarin.Essentials mostrando como verificar a conexão com a internet em uma aplicação Xamarin Forms. |
Se você costuma usar plugins para incluir funcionalidades em suas aplicações Xamarin não pode deixar de conhecer o Xamarin.Essentials.
Eu apresentei o Xamarin.Essentials neste artigo : Xamarin Forms - Introdução ao Xamarin.Essentials
Hoje eu vou mostrar como podemos verificar a conexão com a internet usando o Xamarin.Essentials.
A informação sobre conectividade usando o Xamarin.Essentials não é 100% precisa; você pode receber a informação de que a rede esta disponível mas o acesso total à web não esta.
Devido ao funcionamento de conectividade em cada plataforma o resultado obtido só pode garantir que uma conexão está disponível. Assim, o dispositivo pode estar conectado a uma rede Wi-Fi, mas o roteador estar desconectado da internet.
A informação do acesso à rede pode ser:
Além disso você pode verificar que tipo de perfil de conexão o dispostivo esta usando. Ele que descreve o tipo de conexão que o dispositivo estiver usando ativamente:
Bluetooth | 0 | Conexão bluetooth |
Cellular | 1 | Conexão mobile/cellular |
Ethernet | 2 | Conexão ethernet |
Other | 5 | Tipo de conexão não conhecido |
WiFi | 4 | Conexão WiFi |
WiMAX | 3 | Conexão WiMAX |
Recursos Usados
Criando o projeto Xamarin Forms
Abra o VS 2017 Community e clique em New Project e a seguir escolha Cross Platform -> Mobile App (Xamarin.Forms) e informe o nome XF_CheckInternet:
A seguir selecione a Plataforma, eu marquei somente Android, e escolha a estratégia de compartilhamento que será .NET Standard.
Clique no botão OK.
Pronto nosso projeto já esta criado. (Verifique a necessidade de atualizar a versão do Xamarin Forms no seu projeto. Atualmente(06/2018) a versão mais atual é a 3.1.0)
Incluindo a referência ao Plugin no projeto
Acesse o Manage Packages for Solution via menu Tools e na guia Browse localize e instale o plugin Xamarim.Essentials em todos os projetos:
Como o plugin ainda esta em pré-release para poder instalar o pacote via Nuget marque a opção : include prerelease
Ao final seu projeto deverá conter as referências aos pacotes :
Lembrando que o Xamarin.Essentials dá suporte a uma versão mínima do Android do 4.4, correspondente ao nível de API 19, mas a versão do Android de destino de compilação deve ser 8.1, correspondente ao nível 27 da API. Então, nas propriedades do seu projeto Android as configurações mínimas devem estar definidas conforme mostra a figura abaixo :
Após criar o seu projeto Xamarin Forms, no projeto Android MainLauncher ou em qualquer Activity que inicia o projeto o Xamarin.Essentials deve ser inicializado no método OnCreate.
Assim no arquivo MainActivity você deve incluir a linha de código mostrada na figura abaixo:
Para poder lidar com permissões em tempo de execução no Android, o plugin deve receber um OnRequestPermissonsResult que deve ser incluído nas Activitys.
Abaixo o código necessário incluído na MainActivity do projeto Android:
Não esqueça também de definir no projeto Android as permissões : INTERNET e ACCESS_NETWORK_STATE
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="1" android:versionName="1.0" package="com.companyname" android:installLocation="auto">
<uses-sdk android:minSdkVersion="19" android:targetSdkVersion="27" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<application android:label="XF_CheckInternet.Android"></application>
</manifest>
|
Na pasta Resources/drawable do projeto Android eu incluir duas imagens para exibir no projeto: mac.jpg e xamessential.png que são opcionais.
Definindo o código da MainPage.xaml e do code-behind
Abra o arquivo MainPage.xaml e inclua no código abaixo:
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:XF_CheckInternet"
x:Class="XF_CheckInternet.MainPage">
<StackLayout HorizontalOptions="Center" VerticalOptions="Start">
<Image Margin="0,50,0,0" x:Name="imgBanner" Source="mac.jpg" ></Image>
<Image Margin="0,0,0,10" x:Name="imgXamarinEssential" Source="xamessential.png" ></Image>
<Label Margin="0,0,0,10" FontAttributes="Bold" FontSize="Medium" TextColor="#CA6F1E" HorizontalTextAlignment="Center" Text="Informação de Conectividade"></Label>
<Label HorizontalOptions="Center" FontAttributes="Bold" FontSize="Medium" x:Name="lblNetworkStatus"></Label>
<Label HorizontalOptions="Center" FontAttributes="Bold" FontSize="Medium" x:Name="lblNetworkPerfil"></Label>
</StackLayout>
</ContentPage>
|
Agora para concluir inclua o código a seguir no arquivo MainPage.xaml.cs :
using System.Linq;
using Xamarin.Essentials;
using Xamarin.Forms;
namespace XF_CheckInternet
{
public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
var internet = Connectivity.NetworkAccess;
var perfis = Connectivity.Profiles;
//verifica o acesso à internet
if (internet == NetworkAccess.Internet)
{
lblNetworkStatus.Text = "A internet esta Disponível";
}
else
{
lblNetworkStatus.Text = "A internet esta Indisponível";
}
//verifica o perfil de conectividade
if (perfis.Contains(ConnectionProfile.WiFi))
{
lblNetworkPerfil.Text = perfis.FirstOrDefault().ToString();
}
else
{
lblNetworkPerfil.Text = perfis.FirstOrDefault().ToString();
}
}
}
}
|
Executando o projeto iremos obter o seguinte resultado:
Pegue o código do projeto compartilhado aqui : XF_CheckInternet.zip
'(Disse Jesus) - Nisto todos conhecerão
que sois meus discípulos, se vos amardes uns aos outros.'
João 13:35
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? |
Gostou ? Compartilhe no Facebook Compartilhe no Twitter
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Xamarin Android - Apresentando o controle ProgressBar - Macoratti.net
Xamarin Android - Usando o serviço de Alarme - Macoratti.net
Xamarin.Forms - Usando a view ActivityIndicator - Macoratti.net