Você está na página 1de 10

Android Notificaes

http://www.tdevrocks.com.br/2015/01/28/tutorial-notificacoes-no-ios-e-android/

O uso de smartphones no dia-a-dia nos deixa as vezes preguioso por conta dos milhares de recursos
disponveis para nos ajudar nas tarefas dirias. So milhares de aplicativos disponveis nas lojas Google
Play e AppStore e muitos deles, principalmente aplicativos de mensagens e jogos, se utilizam de um recurso
bastante interessante que apelidamos de Notificaes. Essas notificaes podem aparecer de diversas formas
no aparelho, a forma mais comum o uso das Centrais de Notificaes presentes no iPhone e celulares
com Android.
Nesse breve tutorial, veremos como se utilizar desses recursos para enviar informaes ao usurio de nossos
apps. Aprenderemos ento a criar notificaes instantneas, cones com o nmero de alertas do app e
tambm o uso da Central de Notificaes do Sistema Operacional.

Inicie criando uma nova aplicao no RAD Studio XE7 utilizando o menu File > New > Multi-Device
Application Delphi. Selecione um template em branco (Blank Application) e salve o aplicativo em um
diretrio de sua escolha.
Tanto no iOS quanto no Android, as notificaes no iOS e Android so enviadas e controladas pelo
componente NotificationCenter da classe de mesmo nome. Vale lembrar que esses alertas somente
funcionam em plataformas mveis, por isso mude o Target de seu Delphi para Android ou iOS (Device ou
Simulator) para que possamos incluir um componente dessa classe em nosso formulrio. Tambm ser
necessrio incluir os namespaces FMX.Platform e FMX.Notification no Uses do formulrio caso no seja
incluso automaticamente.
Basicamente, como mencionado anteriormente, existem diversas formas de se mostrar notificaes. No
cone da aplicao, em forma de banner e ainda na Central de Notificaes. Iniciaremos nossos estudos
modificando o cone da aplicao.
Insira um TLabel modificando sua propriedade Text para Nmero de Notificaes (sem aspas) e em
seguida coloque um TEdit na tela. Modifique seu Text inserindo o valor 15 ou algo de sua preferncia e
modifique seu Name para edtNumber. Agora insira um SpeedButton e modifique a propriedade Text para
Aplicar. Ns faremos com que ao tocar no SpeedButton, seja acrescentado um cone com o valor 15
(ou o que for digitado por ns) acima do cone do aplicativo como comum em Android e iOS.
Codifique o boto no evento OnClick de acordo com a Listagem 1.
?
1 procedure TForm1.SpeedButton1Click(Sender: TObject);
2 var
3
4
5
6
7

MyNotification: TNotification;
begin
MyNotification := NotificationCenter1.CreateNotification;
try
MyNotification.Number

:= edtNumber.Text.ToInteger;

8
9
10

NotificationCenter1.PresentNotification(MyNotification);
finally

11
12

MyNotification.DisposeOf;
end;

13 end;

Listagem 1. Modificando o cone da aplicao


A explicao para o algortimo anterior simples. Ns criamos uma varivel do tipo TNotification para
configurar o tipo de notificao que desejamos. Instanciamos essa varivel logo na primeira linha de nosso
procedimento usando o mtodo CreateNotification do componente NotificationCenter1. Aps isso ns
configuramos o valor numrico (referente ao nmero de alertas) que aparecer no cone do aplicativo.
Usamos a propriedade Number da nossa varivel, nossa instncia. Por fim, chamamos o mtodo
PresentNotification do componente NotificationCenter1 passando para ele qual a instncia da notificao,
ou seja, nossa varivel.
Se executarmos nossa app agora e clicarmos no boto Aplicar, veremos o valor esperado. Voc dever sair
da aplicao apertando o boto Home no iPhone/iPad ou Voltar no Android para ir at a rea de trabalho do
sistema operacional. Voc deve visualizar algo parecido com as imagens a seguir:

iPad Simulator

Android Simulator

Agendamento de Notificaes

Outro recurso bastante comum vermos, tanto no iOS quanto no Android, um banner com um alerta
especfico da aplicao. Isso bastante comum em aplicativos de chat, tais como Facebook Chat e
Whatsapp. Esses banners normalmente aparecem na parte superior do aparelho e desaparecem segundos
depois. Depois ficam visveis apenas na Central de Notificaes que pode ser acessada arrastando o dedo de

cima para baixo. Essas notificaes podem ser agendadas ou instantneas. Vejamos um exemplo de
agendamento:
Insira outro TLabel na tela e modifique seu Text para Mensagem de Agendamento. Coloque tambm um
novo TEdit e mude seu Name para edtMensagem. Por fim um novo SpeedButton e mude o Text para
Agendar. No cdigo-fonte do evento OnClick desse boto, digite o algortimo da Listagem 2.
?
1
2

procedure TForm1.SpeedButton2Click(Sender: TObject);


var

MyNotification: TNotification;

4 begin
5

MyNotification := NotificationCenter1.CreateNotification;

try

MyNotification.Name

MyNotification.AlertBody := edtMensagem.Text;

MyNotification.FireDate

:= 'MinhaNotificacao';

:= Now + EncodeTime(0, 0, 10, 0);

10
NotificationCenter1.ScheduleNotification(MyNotification);

11

finally

12

MyNotification.DisposeOf;

13
14
15

end;
end;

Listagem 2. Agendamento
Voc perceber que a codificao inicial bem semelhante a anterior. O que modificamos aqui foi usar
outras trs propriedades da instncia da notificao que no usamos no exemplo anterior:

Name: Nome da notificao;

AlertBody: Texto da notificao;

FireDate: Data da notificao.

Essa ltima propriedade bem interessante. Ns podemos inserir qualquer data nessa propriedade e isso
torna o recurso mais dinmico. Vamos dar um exemplo: digamos que nossa aplicao exija a sincronizao
de dados com o servidor da empresa de 24 em 24 horas e desejamos que o usurio seja avisado sobre isso.
Podemos criar uma frmula capaz de agendar uma notificao para X horas, ou que aparea de tempo em
tempo. Em nosso exemplo, ns codificamos esse tempo para mostrar a notificao 10 segundos aps o
clique no boto Aplicar. Perceba a instruo Now + EncondeTime(0, 0, 10, 0).
Por fim, depois de confirmarmos nossa varivel, ento chamamos o mtodo ScheduleNotification do
componente para agendar nossa notificao. Para testar, execute o aplicativo e pressione o boto Home de
seu iPhone/iPad ou o boto Voltar do seu Android. Aguarde 10 segundos e veja a notificao aparecer e
desaparecer.

Central de notificaes no iOS

Central de Notificaes no Android

Caso seja necessrio, ainda possvel fazer o cancelamento dela no sistema operacional chamando o mtodo
CancelNotification como pode ser visto abaixo.
?
1 NotificationCenter1.CancelNotification('MyNotification');

Notificao Imediata

Caso seu aplicativo necessite notificar o usurio imediatamente sobre uma determinada informao ou
simplesmente seja necessrio j incluir o alerta direto na Central de Notificaes, voc pode utilizar o
mtodo PresentNotification (j utilizado anteriormente) como apresentamos a seguir.
Insira um novo SpeedButton em tela e codifique-o como mostrado na Listagem 3.
?
1 procedure TForm1.SpeedButton3Click(Sender: TObject);
2 var
3
4
5
6

MyNotification : TNotification;
begin
MyNotification := NotificationCenter1.CreateNotification;
try

MyNotification.Name

:= 'MyNotification';

MyNotification.AlertBody

:= edtMensagem.Text;

MyNotification.Number

:= edtNumber.Text.ToInteger;

10

MyNotification.EnableSound := True;

11
12
13

NotificationCenter1.PresentNotification(MyNotification);
finally
MyNotification.DisposeOf;

14
15
16

end;
end;

Listagem 3. Notificao Imediata

Perceba a semelhana com a Listagem 2. Na verdade apenas retiramos o valor da propriedade FireDate e
chamamos o mtodo PresentNotification ao invs de ScheduleNotification. Isso j basta para mandarmos
a notificao para a Central de Notificaes e ainda alteramos o nmero de notificaes no cone. Em outras
palavras, poderamos mesclar tudo que aprendemos at aqui e fazer um nico mtodo atualizando o usurio
com o mximo de informaes.

Banner de Notificao ou Alerta de Notificao?

Por padro, seu aplicativo ir mostrar um banner de notificao. Mas, somente no iOS, possvel
utilizarmos um Alerta de Notificao que pode ser clicado pelo usurio executando uma ao prdeterminada (Figura 1). Para isso, o usurio final dever configurar como deseja receber as notificaes em
seu aplicativo (Figura 2).

Figura 1. Notificao em forma de janela no iOS

Figura 2. Janela de configurao do tipo de alerta no iOS


Para que possamos executar uma determinada ao caso o usurio clique na caixa de dilogo, precisamos
configurar o campo AlertAction da notificao e informar qual o boto que executar a ao. Insira mais um
ltimo boto em tela e codifique-o como na Listagem 4. Modifique o Text do boto para Executar.
?
1 procedure TForm1.LaunchClick(Sender: TObject);
2 var
3
4
5
6
7
8
9
10
11

MyNotification: TNotification;
begin
MyNotification := NotificationCenter1.CreateNotification;
try
MyNotification.Name

:= 'MinhaNotificacao';

MyNotification.AlertBody

:= edtMensagem.Text;

MyNotification.Number

:= edtNumber.Text.ToInteger;

MyNotification.AlertAction := 'Launch';
MyNotification.HasAction

:= True;

MyNotification.FireDate

:= Now + EncodeTime(0, 0, 5, 0);

12
13
14
15
16

NotificationCenter1.ScheduleNotification(MyNotification);
finally
MyNotification.DisposeOf;
end;

17
18

end;

Listagem 4. Execuo de ao pre-configurada


A grande diferena nesse mtodo que configuramos as propriedades AlertAction e HasAction da instncia
de nossa notificao. Com isso estaremos preparados para receber uma ao do usurio. E por falar em
receber uma ao, precisaremos agora codificar o que ela executar. Para isso acesse o evento
OnReceiveLocalNotification do objeto NotificationCenter1. Codifique-o apenas incluindo um
ShowMessage nele como abaixo:
?
1procedure TForm1.NotificationCenter1ReceiveLocalNotification(Sender: TObject;
2

ANotification: TNotification);

3begin
4

ShowMessage('Notificao Clicada');

5end;

Execute a aplicao e teste-a. Nosso formulrio final dever se parecer com as Figuras 3 e 4.

Concluso

Nesse tutorial aprendemos a usar o componente NotificationCenter que prov servios de notificaes para
aplicativos iOS e Android. Vimos que a curva de aprendizado para fazer uso de notificaes em aplicativos
mveis bem baixa e de rpido aprendizado. Nos vemos no prximo tutorial.

Você também pode gostar