Notifications push
Envoyez des notifications push avec Firebase Cloud Messaging. Configurez FCM, créez des canaux de notification, construisez des notifications avec des actions et gérez leur réception au premier plan ou en arrière-plan.
Notifications push est une leçon Android Academy gratuite sur CoddyKit. Ceci est la leçon 4 sur 6. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Android Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Android Academy comprend 6 leçons au total.
Que sont les notifications push ?
Les notifications push permettent à votre serveur d’envoyer des messages aux utilisateurs même lorsque l’application n’est pas au premier plan. Utilisations courantes :
- Mises à jour du statut d’une commande
- Dernières nouvelles
- Rappels et promotions
Sous Android, Firebase Cloud Messaging (FCM) est le service standard de diffusion des notifications push.
Présentation de FCM
Fonctionnement de Firebase Cloud Messaging (FCM) :
- L’application s’enregistre auprès de FCM lors de son premier lancement → elle reçoit un jeton d’appareil
- L’application envoie le jeton à votre serveur
- Lorsque vous souhaitez envoyer une notification push, votre serveur envoie un message à FCM
- FCM le transmet à l’appareil
FCM est gratuit, fiable et fonctionne même lorsque l’application est arrêtée.
Ajouter Firebase au projet
Étapes pour ajouter Firebase :
- Accédez à la console Firebase → Ajouter un projet → Ajouter une application Android
- Enregistrez votre application avec le nom du paquet
- Téléchargez
google-services.jsonet placez-le dansapp/ - Ajoutez les plug-ins et les dépendances
// project/build.gradle:
buildscript {
dependencies { classpath 'com.google.gms:google-services:4.4.1' }
}
// app/build.gradle:
plugins { id 'com.google.gms.google-services' }
dependencies {
implementation platform('com.google.firebase:firebase-bom:32.7.4')
implementation 'com.google.firebase:firebase-messaging-ktx'
}Autorisation FCM (Android 13 et versions ultérieures)
À partir d’Android 13 (API 33), vous devez demander l’autorisation POST_NOTIFICATIONS à l’exécution, comme pour une autorisation dangereuse :
<!-- AndroidManifest.xml -->
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
// In Activity (Android 13+):
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
requestPermissionLauncher.launch(android.Manifest.permission.POST_NOTIFICATIONS)
}FirebaseMessagingService
Créez un service qui gère les messages FCM entrants et l’actualisation des jetons :
class MyFirebaseService : FirebaseMessagingService() {
override fun onNewToken(token: String) {
// Send token to your backend to enable push delivery
sendTokenToServer(token)
}
override fun onMessageReceived(message: RemoteMessage) {
val title = message.notification?.title ?: "New Message"
val body = message.notification?.body ?: ""
showNotification(title, body)
}
}Enregistrer le service dans le manifeste
Déclarez le service dans AndroidManifest.xml :
<service
android:name=".MyFirebaseService"
android:exported="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>Canaux de notification (Android 8 et versions ultérieures)
Depuis Android 8 (Oreo), les notifications doivent être associées à un canal. Les utilisateurs peuvent contrôler le son, les vibrations et l’importance de chaque canal :
fun createNotificationChannel(context: Context) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
val channel = NotificationChannel(
"messages_channel", // channel ID
"Messages", // user-visible name
NotificationManager.IMPORTANCE_HIGH
).apply {
description = "Incoming message notifications"
enableVibration(true)
}
val manager = context.getSystemService(NotificationManager::class.java)
manager.createNotificationChannel(channel)
}
}Créer et afficher une notification
Utilisez NotificationCompat.Builder pour assurer la compatibilité entre les versions d’Android :
fun showNotification(context: Context, title: String, body: String) {
val intent = Intent(context, MainActivity::class.java)
val pendingIntent = PendingIntent.getActivity(
context, 0, intent,
PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE
)
val notification = NotificationCompat.Builder(context, "messages_channel")
.setSmallIcon(R.drawable.ic_notification)
.setContentTitle(title)
.setContentText(body)
.setPriority(NotificationCompat.PRIORITY_HIGH)
.setAutoCancel(true) // dismiss on tap
.setContentIntent(pendingIntent) // open app on tap
.build()
NotificationManagerCompat.from(context)
.notify(System.currentTimeMillis().toInt(), notification)
}Notification avec actions
Ajoutez des boutons d’action aux notifications afin que les utilisateurs puissent agir sans ouvrir l’application :
val replyIntent = Intent(context, ReplyReceiver::class.java)
val replyPending = PendingIntent.getBroadcast(
context, 1, replyIntent,
PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE
)
val notification = NotificationCompat.Builder(context, "messages_channel")
.setSmallIcon(R.drawable.ic_notification)
.setContentTitle("New message from Alice")
.setContentText("Hey, are you coming?")
.addAction(R.drawable.ic_reply, "Reply", replyPending)
.addAction(R.drawable.ic_dismiss, "Dismiss", null)
.build()Gestion au premier plan ou en arrière-plan
Le comportement de FCM varie selon l’état de l’application :
- Application au premier plan —
onMessageReceived()est appelé : vous créez et affichez vous-même la notification - Application en arrière-plan ou arrêtée — FCM affiche automatiquement la notification à partir de la charge utile
notification;onMessageReceivedn’est PAS appelé
Placez les données supplémentaires dans la charge utile data (et non dans notification) pour toujours les recevoir dans onMessageReceived.
Obtenir le jeton FCM
Récupérez le jeton FCM actuel pour l’envoyer à votre serveur :
FirebaseMessaging.getInstance().token.addOnCompleteListener { task ->
if (!task.isSuccessful) {
Log.w("FCM", "Fetching token failed", task.exception)
return@addOnCompleteListener
}
val token = task.result
Log.d("FCM", "Token: $token")
// Send token to your server
sendTokenToServer(token)
}Vérification rapide
Que se passe-t-il lorsque votre application est en arrière-plan et que FCM transmet un message contenant une charge utile « notification » ?
Récapitulatif : notifications push
Notifications push avec FCM sous Android :
- Ajoutez Firebase,
google-services.jsonetfirebase-messaging-ktx - Demandez
POST_NOTIFICATIONSsur Android 13 et versions ultérieures - Créez
FirebaseMessagingService→onNewToken+onMessageReceived - Créez un
NotificationChannelpour Android 8 et versions ultérieures - Créez les notifications avec
NotificationCompat.Builder - Utilisez la charge utile data pour toujours la recevoir dans
onMessageReceived
Ensuite : planifiez des tâches en arrière-plan avec WorkManager.
Questions Fréquemment Posées
La leçon « Notifications push » est-elle gratuite ?
Oui — le texte complet de « Notifications push » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Android Academy, passe à CoddyKit PRO. Le cours Android Academy comprend 6 leçons au total.
Qu'est-ce que j'apprendrai dans « Notifications push » ?
Envoyez des notifications push avec Firebase Cloud Messaging. Configurez FCM, créez des canaux de notification, construisez des notifications avec des actions et gérez leur réception au premier plan… Tu pratiques Android Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Android Academy ?
Aucune expérience préalable n'est requise. Android Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 6.
Combien de temps prend la leçon « Notifications push » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Android Academy ?
Oui. Chaque leçon Android Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Retrofit et API REST
- Charger des images avec Coil
- Gestion des erreurs et expérience utilisateur
- Notifications push
- WorkManager et tâches en arrière-plan
- Publier sur le Play Store