0Pricing
Android Academy · Leçon

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) :

  1. L’application s’enregistre auprès de FCM lors de son premier lancement → elle reçoit un jeton d’appareil
  2. L’application envoie le jeton à votre serveur
  3. Lorsque vous souhaitez envoyer une notification push, votre serveur envoie un message à FCM
  4. 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 :

  1. Accédez à la console Firebase → Ajouter un projet → Ajouter une application Android
  2. Enregistrez votre application avec le nom du paquet
  3. Téléchargez google-services.json et placez-le dans app/
  4. 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 ; onMessageReceived n’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&nbsp;: notifications push

Notifications push avec FCM sous Android :

  • Ajoutez Firebase, google-services.json et firebase-messaging-ktx
  • Demandez POST_NOTIFICATIONS sur Android 13 et versions ultérieures
  • Créez FirebaseMessagingService → onNewToken + onMessageReceived
  • Créez un NotificationChannel pour 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

  1. Retrofit et API REST
  2. Charger des images avec Coil
  3. Gestion des erreurs et expérience utilisateur
  4. Notifications push
  5. WorkManager et tâches en arrière-plan
  6. Publier sur le Play Store
← Retour à Android Academy