🚀 5.5 Notificações Premium e PendingIntents
A barra de status é o centro de comunicações do Android. Para que seu aplicativo envie alertas de forma profissional e segura, é necessário seguir os padrões modernos de Canais de Notificação e PendingIntents.
O Papel da PendingIntent
Uma PendingIntent é um token que você entrega ao sistema Android. Ele permite que o sistema execute uma ação (como abrir uma Activity) em nome do seu aplicativo, mesmo que seu app não esteja rodando no momento.
CAUTION
Imutabilidade (Android 12+): A partir do Android 12, você deve especificar se uma
PendingIntenté mutável ou imutável usando as flagsFLAG_IMMUTABLEouFLAG_MUTABLE. A recomendação de segurança é sempre usarIMMUTABLEa menos que haja uma necessidade específica de alteração.
Implementando a Notificação (Java 17)
private void enviarNotificacao(String usuario, String texto, int id) {
var intent = new Intent(this, TweetActivity.class);
intent.putExtra("usuario", usuario);
intent.putExtra("texto", texto);
// PendingIntent com flag de imutabilidade obrigatória
var pendingIntent = PendingIntent.getActivity(
this,
id,
intent, PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE
);
var builder = new NotificationCompat.Builder(this, "MENCOES_CHANNEL")
.setSmallIcon(R.drawable.ic_notification)
.setContentTitle("Nova menção de " + usuario)
.setContentText(texto)
.setPriority(NotificationCompat.PRIORITY_DEFAULT)
.setContentIntent(pendingIntent) // Ação ao clicar
.setAutoCancel(true); // Remove a notificação ao clicar
NotificationManagerCompat.from(this).notify(id, builder.build());
}
## Configurando o Canal (Mandatório API 26+)
Sem um canal, sua notificação não será exibida em versões modernas do Android:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
var nome = "Alertas de Menção";
var importancia = NotificationManager.IMPORTANCE_DEFAULT;
var canal = new NotificationChannel("MENCOES_CHANNEL", nome, importancia);
var manager = getSystemService(NotificationManager.class);
manager.createNotificationChannel(canal);
}IMPORTANT
Permissão de Notificações (Android 13+): No Android 13 (API 33), o usuário deve conceder a permissão
POST_NOTIFICATIONS. Certifique-se de solicitá-la em tempo de execução, seguindo o padrão que aprendemos no módulo de Content Providers.
TIP
Utilize o Notification History nas configurações do Android para debugar notificações que foram disparadas mas não apareceram na tela (geralmente por falta de canal ou prioridade incorreta).