A notificação é uma forma de informar o usuário sobre eventos do aplicativo. Geralmente é exibida quando ele está fora da aplicação. Desta forma, elas são fortes aliadas para tornar as aplicações mais interativas e aumentar o engajamento com seu usuário.
Quando uma notificação é lançada pela aplicação, ela é tratada pelo Notification Manager, que possui a capacidade de exibir um ícone na área de notificação, exibir a notificação na tela, piscar a tela, vibrar o dispositivo, iniciar um alerta sonoro, exibir informações adicionais quando a área de notificação é exibida, etc.
Curso Flutter - Fundamentos
Conhecer o cursoComo as notificações são formas de informar ao usuário sobre eventos da aplicação, elas são utilizadas, praticamente, por todos os aplicativos. Com este recurso o usuário não precisa abrir a aplicação para saber se novas informações foram recebidas ou se algum evento lançado por ele foi finalizado, ele consegue visualizar estes dados pela própria notificação lançada.
Ao trabalharmos com notificações, é comum implementar uma ação ao evento click. Geralmente, ao receber um click, a aplicação que lançou aquela notificação é aberta exibindo maiores detalhes. Para isso, precisamos passar para a notificação uma PendingIntent.
A PendingIntent especifica uma ação que será executada no futuro. Ela passa uma “futura” intent para outra aplicação e permite que esta aplicação execute a intent como se tivesse as mesmas permissões da sua aplicação. Ela é um token que você informa para uma outra aplicação, que permite que ela execute um pedaço de código com as mesmas permissões que a sua aplicação.
Ao fornecer um PendingIntent para outra aplicação, você garante a execução correta da operação especificada pela outra aplicação, como se fosse a sua (com as mesmas permissões e identidade).
Implementação:
public void criarNotificacaoSimples(){
int id = 1;
String titulo = "Título da Notificação";
String texto = "Texto da notificação Simples";
int icone = android.R.drawable.ic_dialog_info;
Intent intent = new Intent(this, TextoActivity.class);
PendingIntent p = getPendingIntent(id, intent, this);
NotificationCompat.Builder notificacao = new NotificationCompat.Builder(this);
notificacao.setSmallIcon(icone);
notificacao.setContentTitle(titulo);
notificacao.setContentText(texto);
notificacao.setContentIntent(p);
NotificationManagerCompat nm = NotificationManagerCompat.from(this);
nm.notify(id, notificacao.build());
}
private PendingIntent getPendingIntent(int id, Intent intent, Context context){
TaskStackBuilder stackBuilder = TaskStackBuilder.create(context);
stackBuilder.addParentStack(intent.getComponent());
stackBuilder.addNextIntent(intent);
PendingIntent p = stackBuilder.getPendingIntent(id, PendingIntent.FLAG_UPDATE_CURRENT);
return p;
}
No método criarNotificacaoSimples()
, inicialmente, temos a criação de todas as variáveis que serão usadas para criar e configurar a notificação. O id
que irá identificar a notificação, o título, texto e ícone que serão exibidos nela. E no fim deste trecho, é criada a Pending Intent, retornada pelo método getPendingIntent()
:
int id = 1;
String titulo = "Título da Notificação";
String texto = "Texto da notificação Simples";
int icone = android.R.drawable.ic_dialog_info;
Intent intent = new Intent(this, TextoActivity.class);
PendingIntent p = getPendingIntent(id, intent, this);
Em seguida, no mesmo método, temos a criação e a configuração das propriedades da notificação. Para criá-la, é utilizado a Classe de compatibilidade NotificationCompat e assim é possível configurar o ícone (setSmallIcon()
), o título da notificação (setContentTitle()
), o conteúdo (setContentText
) e a intent que será disparada ao clicar sobre a notificação (setContentIntent()
):
NotificationCompat.Builder notificacao = new NotificationCompat.Builder(this);
notificacao.setSmallIcon(icone);
notificacao.setContentTitle(titulo);
notificacao.setContentText(texto);
notificacao.setContentIntent(p);
E para exibir a notificação para o usuário, precisamos de um gerenciador de notificações, no caso o NotificationManagerCompat
, ele será responsável por exibir a notificação para o usuário através do notify()
passando por parâmetro o id
que identificará a notificação e a notificação criada anteriormente:
NotificationManagerCompat nm = NotificationManagerCompat.from(this);
nm.notify(id, notificacao.build());
Agora você já é capaz de implementar uma notificação no seu app. o/
Um abraço e até a próxima!