Que sont les notifications push (APNs et FCM) ?

Mis à jour : septembre 2026

Une notification push est un message initié par le serveur que les services push de la plateforme livrent à l’appareil, même quand l’application est fermée. Les équipes produit connaissent le push comme canal d’engagement ; cette entrée couvre la machinerie de livraison — parce que la machinerie explique chacune des bizarreries dont les équipes produit se plaignent. Le fait central : votre serveur ne parle jamais au téléphone. Chaque OS mobile maintient exactement une connexion persistante, optimisée pour la batterie, vers la passerelle push de son fournisseur — APNs (Apple Push Notification service) pour les appareils Apple, FCM pour Android — et chaque notification de chaque application emprunte ce tuyau partagé.

Points clés

QuestionRéponse
La chaîneVotre backend → APNs/FCM → l’unique socket persistant de l’OS → l’application
L’adresseLe token d’appareil — par installation, changeant sans cesse, à synchroniser et à élaguer
Le contratAu mieux (best-effort) : accepté ≠ livré, limité, désactivable par l’utilisateur
Les limitesPayloads d’environ 4 Ko · drapeaux de priorité · pushs silencieux sur un budget horaire minuscule
vs. les socketsLe push atteint les applications fermées ; les WebSockets servent celles qui sont ouvertes

La chaîne de livraison, de bout en bout

1  L'application demande à l'OS de s'enregistrer pour le push
2  Le service push de la plateforme émet un DEVICE TOKEN (l'adresse)
3  L'application envoie le token à VOTRE backend, qui le stocke
4  Un événement survient → le backend POSTe { token, payload ≤4 Ko } à APNs / FCM
5  Le service push trouve la connexion persistante de l'appareil → livre
6  L'OS affiche la notification — ou réveille brièvement l'application pour un push silencieux

Le second métier de FCM : avec des identifiants APNs déposés, il accepte une requête
et en réémet une conforme à APNs pour les appareils Apple —
une seule surface d'API pour les deux plateformes. Un BaaS abstrait même cela.

Les deux moitiés en code — le client qui enregistre son adresse, le backend qui envoie sur un canal :

// JavaScript — Cloud Code (cloud/main.js)
// One send call reaches both platform push services
await Parse.Push.send({
  channels: ['scores'], // or `where:` with an Installation query
  data: {
    alert: 'Kickoff! Follow the match live.',
    badge: 'Increment',
    uri: 'app://match/8fk2',
  },
}, { useMasterKey: true });
// Back4app routes to APNs for Apple devices and FCM for Android — one API
La livraison des notifications push via les services push des plateformesL'application s'enregistre auprès du service push de sa plateforme et reçoit un token d'appareil, qu'elle synchronise avec le backend applicatif. Le backend envoie des payloads accompagnés des tokens à APNs ou FCM, qui livrent sur l'unique connexion persistante que maintient le système d'exploitation de chaque appareil, et l'OS affiche la notification même quand l'application est fermée.

1 · enregistrement

2 · token d'appareil

3 · synchronisation du token

4 · payload + token

5 · une connexion
persistante de l'OS

6 · affichage / réveil

Application sur l'appareil

Service push de la plateforme
APNs / FCM

Votre backend
registre de tokens

OS de l'appareil

Notification
(application peut-être fermée)

L'application s'enregistre auprès du service push de sa plateforme et reçoit un token d'appareil, qu'elle synchronise avec le backend applicatif. Le backend envoie des payloads accompagnés des tokens à APNs ou FCM, qui livrent sur l'unique connexion persistante que maintient le système d'exploitation de chaque appareil, et l'OS affiche la notification même quand l'application est fermée.

Les tokens d’appareil : l’adresse qui n’arrête pas de changer

Le cycle de vie du token est le vrai travail du backend, et la partie que les pages explicatives sautent. Enregistrer : l’OS émet un token par installation d’application. Stocker : l’application le synchronise avec votre backend à chaque lancement — les tokens changent silencieusement à la réinstallation, à la restauration et à l’effacement des données. Cibler : les envois adressent des tokens, individuellement ou via le registre. Invalider : les envois vers des tokens morts reviennent avec des erreurs précises — 410 Gone côté APNs, erreurs de token non enregistré côté FCM — et FCM périme les tokens inutilisés pendant environ neuf mois. Élaguer : supprimez sur ces erreurs, immédiatement. Les backends qui sautent la dernière étape accumulent des tables de tokens pourrissants qui gaspillent des envois, faussent les métriques de livraison et ralentissent les campagnes — le problème des tokens périmés est ennuyeux, cumulatif, et c’est le bug de push le plus courant dans la vraie vie.

APNs vs. FCM

APNsFCM
AtteintLes appareils Apple — la seule routeAndroid nativement ; les appareils Apple en relayant vers APNs
AuthentificationClé de signature .p8 (key ID + team ID)Identifiants serveur depuis la console de la plateforme
Payload~4 Ko · dictionnaire aps~4 Ko · messages notification + data
Gestion hors ligneFusionne — garde le plus récent par applicationFile avec un TTL, jusqu’à environ 4 semaines
Priorité10 (immédiat) vs. 5 (économe en énergie)Haute vs. normale
ExtrasCollapse IDs, pushs d’arrière-planTopics, groupes d’appareils, collapse keys

La conséquence pratique de la première ligne : tout backend multiplateforme soit intègre les deux services, soit utilise FCM comme surface unique (en y déposant les identifiants APNs), soit confie tout le problème à une plateforme qui détient les deux jeux d’identifiants — ce qui nous amène à la section BaaS.

Ce que le push ne promet pas

Le contrat honnête, rassemblé en un seul endroit. Un 200 du service push signifie accepté pour livraison, pas livré. Les appareils hors ligne n’accumulent pas une file fidèle : APNs ne garde que la notification la plus récente par application ; la file de FCM expire selon un TTL. Les optimiseurs de batterie sur Android reportent la livraison d’une manière que vous ne contrôlez pas ; les utilisateurs peuvent faire taire un canal ou l’application entière au niveau de l’OS, invisiblement pour votre backend. Les pushs silencieux — des réveils d’arrière-plan sans alerte visible — tournent sur un budget horaire minuscule et sont abandonnés sans erreur au-delà, d’après les recommandations d’Apple elles-mêmes ; ce sont des indices de rafraîchissement, pas un protocole de synchronisation. La règle de conception qui en découle : le push est la tape sur l’épaule — les données elles-mêmes voyagent par votre API à l’ouverture de l’application, et tout ce qui doit absolument arriver obtient un second canal.

Le web push, en bref

Les navigateurs ont normalisé leur propre chaîne : la page s’abonne via la Push API en utilisant votre paire de clés VAPID (RFC 8292 — le serveur s’identifie avec un token signé, sans enregistrement chez un fournisseur), le service push du navigateur renvoie un abonnement (URL d’endpoint + clés de chiffrement), et votre serveur envoie en POST des payloads chiffrés à cet endpoint selon le Web Push Protocol. Un service worker reçoit l’événement push et affiche la notification — site fermé, navigateur peut-être fermé sur ordinateur. Chaque éditeur de navigateur exploite son propre service push ; l’URL d’endpoint indique à votre serveur où faire le POST. La réserve honnête : sur iOS, le web push ne fonctionne que pour les applications web installées sur l’écran d’accueil.

Push vs. WebSockets vs. live queries

Notifications pushWebSockets / live queries
État de l’applicationFermée ou en arrière-planOuverte, connectée
DirectionSens unique, serveur → appareilFull duplex / push par abonnement
Latence et fiabilitéDe l’ordre de la seconde, au mieuxMillisecondes, garanties par la connexion
PayloadRésumé d’environ 4 Ko + lien profondCe que votre protocole transporte
L’hybrideLe pattern de production : livrer par le socket si connecté ; basculer en push après quelques secondes sinon

Ce sont des compléments avec une seule frontière : le socket sert l’utilisateur qui regarde l’écran ; le push atteint celui qui a posé son téléphone. Les applications de chat démontrent l’hybride tous les jours — les messages circulent sur la connexion tant que l’application est ouverte, et le même message devient un push dès qu’elle ne l’est plus.

Cas d’usage courants

  • Messages et mentions — le push canonique : quelqu’un a besoin de vous, l’application est fermée.
  • Alertes transactionnelles — commande expédiée, course qui arrive, paiement validé : des résumés d’une ligne avec un lien profond vers l’application.
  • Déclencheurs sensibles au temps — changements de score, alertes de prix, moments « X est en direct » proches de la présence.
  • Réengagement — à utiliser avec parcimonie, avec des désinscriptions par canal, sinon les utilisateurs désactivent tout.
  • Badges et indices d’état — le budget silencieux dépensé à pousser l’application à se rafraîchir avant que l’utilisateur ne l’ouvre.

Devriez-vous pousser ? Matrice de décision

SituationChoisissez
L’utilisateur doit savoir alors que l’application est ferméeLe push — son métier par définition
L’application est ouverte à l’écranLive queries / sockets — plus rapides, fiables
Les données doivent arriver, garantiesVotre API + une synchronisation en arrière-plan ; le push comme tape sur l’épaule
Audience webLe web push via VAPID + service worker
Synchronisations silencieuses fréquentesNon — le budget les abandonnera ; synchronisez à l’ouverture
Deux plateformes, une seule équipeUne API au-dessus des deux services — le mode relais de FCM ou un BaaS

Limites et trade-offs

  • La livraison est une probabilité, pas une promesse. Concevez des flux qui survivent à un push manqué ; réconciliez à l’ouverture de l’application.
  • La permission ne se demande vraiment qu’une fois. L’invite de l’OS (explicite sur iOS et sur le web, à l’exécution sur Android moderne) convertit mieux quand elle est demandée en contexte — et un refus est quasi irréversible.
  • Le registre de tokens est un jeu de données vivant. Synchronisez au lancement, élaguez sur erreur, ou regardez la délivrabilité se dégrader en silence.
  • Les payloads sont quasi publics. Les notifications s’affichent sur les écrans verrouillés et traversent une infrastructure tierce — des résumés et des identifiants, jamais des secrets.
  • Deux systèmes d’identifiants, une seule fonctionnalité. Clés .p8, identifiants de console, expiration et rotation — la douleur de configuration est réelle, une fois par plateforme, et c’est exactement ce que les couches gérées absorbent.

Le push sur Back4app

Back4app est une plateforme open-source de Backend as a Service (BaaS) qui combine une base de données gérée, des API REST et GraphQL générées automatiquement, l’authentification, le stockage de fichiers et des fonctions serverless avec Cloud Code. Le service push de Back4app transforme toute la chaîne en données : chaque installation s’enregistre comme un objet Installation — token d’appareil, plateforme, canaux et Pointer vers l’utilisateur capturés automatiquement, comme le montrent les onglets client — et un seul appel d’envoi adresse des canaux (façon topic) ou n’importe quelle requête sur les Installation (« tous ceux du canal scores sur Android qui n’ont pas ouvert l’application cette semaine »), la plateforme détenant vos identifiants APNs et FCM et routant par appareil. Les envois partent de Cloud Code — un afterSave sur Message qui pousse vers le destinataire est la moitié de repli du pattern hybride —, de jobs planifiés, ou de la console du dashboard pour des campagnes ponctuelles. L’hygiène des tokens, les identifiants doubles et les bizarreries de payload par plateforme deviennent un comportement de plateforme ; votre code décide qui et quoi, pas comment.

Questions fréquentes

Qu'est-ce qu'une notification push ?

Un message initié par le serveur, livré à un appareil par le service push du système d'exploitation et affiché même quand l'application ne tourne pas. Cette dernière propriété est celle qui définit tout — elle sépare le push des messages in-app, qui exigent que l'application soit ouverte, et des sockets, qui exigent une connexion vivante.

Comment fonctionnent les notifications push de bout en bout ?

L'application s'enregistre auprès du service push de sa plateforme et reçoit un token d'appareil ; l'application transmet ce token à votre backend ; votre backend envoie un payload accompagné du token à APNs ou FCM ; le service push le livre sur la connexion persistante que le système d'exploitation maintient ; le système affiche la notification ou réveille l'application.

Qu'est-ce qu'un token d'appareil ?

Un identifiant opaque pour une installation d'application sur un appareil, émis par le service push de la plateforme — une adresse, pas un secret. Il change à la réinstallation, à la restauration ou à l'effacement des données, ce qui explique pourquoi les applications le resynchronisent avec le backend à chaque lancement et pourquoi les backends le suppriment dès qu'un envoi le signale disparu.

Quelle est la différence entre APNs et FCM ?

APNs (Apple Push Notification service) est la seule route vers les appareils Apple. FCM est le service push de la plateforme Android — et fait aussi office de couche multiplateforme : avec des identifiants APNs déposés chez lui, il accepte une seule requête et en réémet une conforme à APNs pour les appareils Apple. Une API, deux plateformes.

Pourquoi mon serveur ne peut-il pas pousser directement vers un appareil ?

Parce que seul le système d'exploitation détient l'unique connexion persistante et optimisée pour la batterie vers son service push — un socket partagé par toutes les applications du téléphone. Des serveurs quelconques ne peuvent pas garder des connexions ouvertes à travers les radios, le NAT et les états de veille, donc tous les pushs passent par les passerelles des plateformes.

Comment fonctionne le web push ?

Par les service workers : la page s'abonne avec votre clé publique VAPID, le service push du navigateur renvoie un abonnement — une URL d'endpoint plus des clés de chiffrement — et votre serveur envoie en POST des payloads chiffrés à cet endpoint selon le Web Push Protocol. L'événement push du service worker affiche la notification, même site fermé.

La livraison des pushs est-elle garantie ?

Non — une réponse de succès d'APNs ou de FCM signifie accepté, pas livré. Les appareils hors ligne reçoivent des files fusionnées ou limitées dans le temps, les optimiseurs de batterie retardent la livraison, et les utilisateurs peuvent désactiver complètement les notifications. Le push fonctionne au mieux par conception ; tout ce qui est critique a besoin d'un second canal.

Que sont les notifications push silencieuses ?

Des pushs d'arrière-plan qui réveillent l'application pour aller chercher des données sans afficher d'alerte. Ils sont fortement limités — pensez à un petit budget horaire, les envois hors budget étant abandonnés sans erreur — donc ils fonctionnent comme des indices de rafraîchissement, jamais comme un transport de synchronisation fiable.

Termes associés

À comparer avec

Lectures recommandées

Prêt à construire votre backend ?

Lancez votre projet sur Back4app en quelques minutes — base de données, authentification, API et Cloud Code inclus. Sans carte bancaire.

Écrit et révisé par Back4app Engineering, Back4app Engineering · Publié le 2026-09-10