Escolar Documentos
Profissional Documentos
Cultura Documentos
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;
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
MyNotification: TNotification;
4 begin
5
MyNotification := NotificationCenter1.CreateNotification;
try
MyNotification.Name
MyNotification.AlertBody := edtMensagem.Text;
MyNotification.FireDate
:= 'MinhaNotificacao';
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:
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.
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;
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.
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).
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
12
13
14
15
16
NotificationCenter1.ScheduleNotification(MyNotification);
finally
MyNotification.DisposeOf;
end;
17
18
end;
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.