Native Message – Xamarin.Forms

Olá, já se deparou com a necessidade de apresentar uma mensagem para o usuário do seu app e não querer utilizar um DisplayAlert ?

Neste post irei demonstrar como apresentar mensagens ao usuário, respeitando os padrões nativos de cada plataforma em suas aplicações Xamarin.Forms.

Para este exemplo irei criar um Toast para a plataforma Android e um UIAlertController para a plataforma iOS.

IMessage

1

Crie a interface IMessage em seu projeto compartilhado, observe que teremos dois tipos de mensagens:

  • LongAlert – Mensagem com tempo de duração maior.
  • ShortAlert –  Mensagem com tempo de duração menor.
namespace DemoNativeMessage
{
public interface IMessage
{
void LongAlert(string message);
void ShortAlert(string message);
}
}

view raw
IMessage.cs
hosted with ❤ by GitHub

Android

2

Em seu projeto .Android crie a classe MessageAndroid, onde iremos utilizar o Toast.MakeText para criar o LongAlert e o ShortAlert.

using Android.App;
using Android.Widget;
using DemoNativeMessage.Droid;
[assembly: Xamarin.Forms.Dependency(typeof(MessageAndroid))]
namespace DemoNativeMessage.Droid
{
public class MessageAndroid : IMessage
{
public void LongAlert(string message)
{
Toast.MakeText(Application.Context, message, ToastLength.Long).Show();
}
public void ShortAlert(string message)
{
Toast.MakeText(Application.Context, message, ToastLength.Short).Show();
}
}
}

view raw
MessageAndroid.cs
hosted with ❤ by GitHub

iOS

3

Em seu projeto .iOS crie a classe MessageiOS, observe que aqui estamos definindo o tempo de cada mensagem nas constantes do tipo double SHORT_DELAY e LONG_DELAY.

using DemoNativeMessage.iOS;
using Foundation;
using UIKit;
[assembly: Xamarin.Forms.Dependency(typeof(MessageiOS))]
namespace DemoNativeMessage.iOS
{
public class MessageiOS : IMessage
{
UIAlertController alert;
NSTimer alertDelay;
const double SHORT_DELAY = 2.0;
const double LONG_DELAY = 3.5;
public void LongAlert(string message)
{
ShowAlert(message, LONG_DELAY);
}
public void ShortAlert(string message)
{
ShowAlert(message, SHORT_DELAY);
}
void ShowAlert(string message, double seconds)
{
alertDelay = NSTimer.CreateScheduledTimer(seconds, (obj) =>
{
DismissMessage();
});
alert = UIAlertController.Create(null, message, UIAlertControllerStyle.Alert);
UIApplication.SharedApplication.KeyWindow.RootViewController.PresentViewController(alert, true, null);
}
void DismissMessage()
{
if (alert != null)
{
alert.DismissViewController(true, null);
}
if (alertDelay != null)
{
alertDelay.Dispose();
}
}
}
}

view raw
MessageiOS.cs
hosted with ❤ by GitHub

MainPage

Para este exemplo foi criado na MainPage.xaml um botão que quando clicado chama o método Button_OnClicked.

Para mostrar a mensagem para o usuário utilize DependencyService.Get(), o tipo de mensagem desejada  (LongAlert ou ShortAlert) e passando como parâmetro o texto desejado.

using System;
using Xamarin.Forms;
namespace DemoNativeMessage
{
public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
}
private void Button_OnClicked(object sender, EventArgs e)
{
DependencyService.Get<IMessage>().LongAlert("Hello");
}
}
}

view raw
MainPage.xaml.cs
hosted with ❤ by GitHub

Resultado

Android

ezgif.com-gif-maker (7)

 

 

iOS

ezgif.com-gif-maker (6)

Esse e todos os exemplos deste blog encontram-se disponíveis no GitHub.

icongithub

Um comentário em “Native Message – Xamarin.Forms

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s