Passer au contenu principal
NeoCraft
À proposOutilsRéalisationsÉquipeServicesContactBlog
ENFR
NeoCraft

Savoir-faire artisanal au service de votre transformation digitale. Création web, mobile et formations d'excellence.

FacebookLinkedInXInstagramMastodon

Services

  • Sites vitrine & institutionnels
  • Sites e-commerce
  • Développement sur mesure
  • Google Ads & Facebook Ads
  • SEO

Mentions légales

  • Politique de confidentialité

© 2026 NeoCraft. Tous droits réservés.

Propulsé par
NeoCraftTeam
Comment implémenter des notifications push sur une application Next.js
Retour à l'accueil
  1. Blog
  2. Comment implémenter des notifications push sur une application Next.js

Comment implémenter des notifications push sur une application Next.js


Vous avez créé une application Next.js élégante, dotée de fonctionnalités impressionnantes et de performances fluides. Mais vous êtes désormais confronté à un défi majeur : vos utilisateurs n'interagissent plus avec votre contenu une fois qu'ils quittent votre site. Vous devez trouver un moyen de les faire revenir, de les informer des mises à jour importantes, des nouvelles fonctionnalités ou des informations urgentes, même lorsqu'ils n'utilisent pas activement votre application.

Les notifications push sont la solution, mais leur implémentation dans une application Next.js peut s'avérer complexe. Entre les problèmes de compatibilité des navigateurs, les exigences coûteuses d'Apple pour les développeurs et la complexité technique de la configuration des systèmes de notifications, de nombreux développeurs sont frustrés et ne savent pas par où commencer.

Comprendre les notifications push

Les notifications push sont de petits messages envoyés depuis une application web vers les appareils des utilisateurs, visibles même lorsque ces derniers n'interagissent pas activement avec l'application. Selon OneSignal , ces notifications apparaissent sur l'appareil de l'utilisateur sans que l'application soit ouverte, ce qui en fait un puissant outil de réengagement.

Il existe deux principaux types de notifications push :

  1. Notifications Web Push : diffusées via les navigateurs Web sur les ordinateurs de bureau ou les appareils mobiles

  2. Notifications push mobiles : envoyées via des applications mobiles installées sur les appareils

Principaux services et API de notification push

Pour mettre en œuvre les notifications push, vous devrez comprendre les principaux services disponibles :

  • Firebase Cloud Messaging (FCM) : le service gratuit de Google pour envoyer des notifications aux applications Web et mobiles

  • Service de notifications push Apple (APN) : requis pour l'envoi de notifications aux appareils iOS (nécessite un compte développeur Apple payant)

  • API Web Push : l'API de navigateur standard qui permet aux applications Web de recevoir des messages push

Chacun de ces services a des exigences et des limites d’implémentation spécifiques, que nous explorerons tout au long de cet article.

Avantages de la mise en œuvre des notifications push

Avant de plonger dans les détails de mise en œuvre, il est important de comprendre pourquoi les notifications push valent la peine :

  • Engagement utilisateur accru : les notifications push peuvent atteindre des taux d'ouverture d'environ 20 %, contre seulement 2 % pour les e-mails

  • Amélioration de la rétention des utilisateurs : des notifications régulières et utiles permettent de garder votre application en tête

  • Mises à jour urgentes : fournissez immédiatement des informations critiques

  • Communication ciblée : segmentez les utilisateurs et diffusez des notifications personnalisées

Selon une enquête menée par Localytics , les utilisateurs de 2017 étaient en réalité plus disposés à recevoir des notifications push que ceux de 2015 avant de les désactiver, ce qui montre une acceptation croissante de ce canal de communication lorsqu'il est utilisé correctement.

Implémentation des notifications push dans Next.js : différentes approches

Explorons plusieurs approches pour implémenter des notifications push dans une application Next.js, de la création de votre propre solution à l'utilisation de services tiers.

Approche 1 : Création avec Firebase Cloud Messaging (FCM)

Firebase Cloud Messaging offre une solution robuste et gratuite pour implémenter des notifications push. Voici comment la configurer dans votre application Next.js :

Étape 1 : Configurer le projet Firebase

Tout d’abord, créez un projet dans la console Firebase et obtenez les détails de votre configuration.

Étape 2 : installer le SDK Firebase

npm install firebase
# or
yarn add firebase

Étape 3 : Créer une configuration Firebase

Créez un firebase.jsfichier dans votre projet :

// firebase.js
import { initializeApp } from 'firebase/app';
import { getMessaging, getToken, onMessage } from 'firebase/messaging';

const firebaseConfig = {
  apiKey: "YOUR_API_KEY",
  authDomain: "YOUR_AUTH_DOMAIN",
  projectId: "YOUR_PROJECT_ID",
  storageBucket: "YOUR_STORAGE_BUCKET",
  messagingSenderId: "YOUR_MESSAGING_SENDER_ID",
  appId: "YOUR_APP_ID"
};

// Initialize Firebase
const app = initializeApp(firebaseConfig);

// Initialize Firebase Cloud Messaging
let messaging;

// We need to check if we're in the browser environment
if (typeof window !== 'undefined') {
  messaging = getMessaging(app);
}

export { messaging, getToken, onMessage };

Étape 4 : Créer un Service Worker

Pour que FCM fonctionne, vous avez besoin d'un service worker. Créez un fichier nommé firebase-messaging-sw.jsdans votre publicdossier :

// public/firebase-messaging-sw.js
importScripts('https://www.gstatic.com/firebasejs/9.0.0/firebase-app-compat.js');
importScripts('https://www.gstatic.com/firebasejs/9.0.0/firebase-messaging-compat.js');

firebase.initializeApp({
  apiKey: "YOUR_API_KEY",
  authDomain: "YOUR_AUTH_DOMAIN",
  projectId: "YOUR_PROJECT_ID",
  storageBucket: "YOUR_STORAGE_BUCKET",
  messagingSenderId: "YOUR_MESSAGING_SENDER_ID",
  appId: "YOUR_APP_ID"
});

const messaging = firebase.messaging();

// Handle background messages
messaging.onBackgroundMessage(function(payload) {
  console.log('Received background message ', payload);

  const notificationTitle = payload.notification.title;
  const notificationOptions = {
    body: payload.notification.body,
    icon: '/favicon.ico'
  };

  self.registration.showNotification(notificationTitle, notificationOptions);
});

Étape 5 : Demander l’autorisation et obtenir le jeton

Créez un composant pour demander des autorisations de notification :

// components/NotificationPermission.jsx
import { useEffect, useState } from 'react';
import { messaging, getToken } from '../firebase';

export default function NotificationPermission() {
  const [token, setToken] = useState('');
  const [notificationPermission, setNotificationPermission] = useState('default');

  useEffect(() => {
    if (typeof window !== 'undefined' && messaging) {
      // Request permission
      Notification.requestPermission().then((permission) => {
        setNotificationPermission(permission);
        
        if (permission === 'granted') {
          // Get FCM token
          getToken(messaging, { 
            vapidKey: "YOUR_VAPID_KEY" 
          }).then((currentToken) => {
            if (currentToken) {
              // Send the token to your server
              console.log('FCM Token:', currentToken);
              setToken(currentToken);
              
              // Here you would typically send this token to your backend
              sendTokenToServer(currentToken);
            } else {
              console.log('No registration token available.');
            }
          }).catch((err) => {
            console.log('An error occurred while retrieving token. ', err);
          });
        }
      });
    }
  }, []);

  const sendTokenToServer = async (token) => {
    try {
      const response = await fetch('/api/registerPushToken', {
        method: 'POST',
        headers: { 'Content-Type': 'application/json' },
        body: JSON.stringify({ token })
      });
      const data = await response.json();
      console.log('Token registered:', data);
    } catch (error) {
      console.error('Error registering token:', error);
    }
  };

  return (
    <div>
      {notificationPermission === 'granted' ? (
        <p>Thank you for enabling notifications!</p>
      ) : (
        <button onClick={() => Notification.requestPermission()}>
          Enable Push Notifications
        </button>
      )}
    </div>
  );
}

Étape 6 : Gérer les messages de premier plan

Pour recevoir des notifications lorsque votre application est ouverte, configurez un gestionnaire :

// In your _app.js or a component that's always mounted
import { useEffect } from 'react';
import { messaging, onMessage } from '../firebase';

function MyApp({ Component, pageProps }) {
  useEffect(() => {
    if (typeof window !== 'undefined' && messaging) {
      // Handle messages when the app is in the foreground
      const unsubscribe = onMessage(messaging, (payload) => {
        console.log('Message received in foreground:', payload);
        // You can show a custom notification UI here
        // Or use the browser's notification API
        new Notification(payload.notification.title, {
          body: payload.notification.body,
          icon: '/favicon.ico'
        });
      });
      
      return () => unsubscribe();
    }
  }, []);

  return <Component {...pageProps} />;
}

export default MyApp;

Étape 7 : Configurer le point de terminaison de l'API pour envoyer des notifications

Créez un point de terminaison d'API dans votre application Next.js pour envoyer des notifications :

// pages/api/sendNotification.js
import admin from 'firebase-admin';

// Initialize Firebase Admin if it hasn't been initialized yet
if (!admin.apps.length) {
  admin.initializeApp({
    credential: admin.credential.cert({
      projectId: process.env.FIREBASE_PROJECT_ID,
      clientEmail: process.env.FIREBASE_CLIENT_EMAIL,
      privateKey: process.env.FIREBASE_PRIVATE_KEY.replace(/\\n/g, '\n'),
    }),
  });
}

export default async function handler(req, res) {
  if (req.method !== 'POST') {
    return res.status(405).json({ error: 'Method not allowed' });
  }

  const { token, title, body } = req.body;

  try {
    const message = {
      notification: {
        title,
        body,
      },
      token,
    };

    const response = await admin.messaging().send(message);
    return res.status(200).json({ success: true, response });
  } catch (error) {
    console.error('Error sending notification:', error);
    return res.status(500).json({ error: error.message });
  }
}

Approche 2 : Utilisation de OneSignal

OneSignal est un service tiers populaire qui simplifie la mise en œuvre des notifications push. Particulièrement adapté aux applications e-commerce, il propose une offre gratuite généreuse.

Étape 1 : Créer un compte et une application OneSignal

Inscrivez-vous à OneSignal et créez une nouvelle application dans leur tableau de bord.

Étape 2 : installer le SDK OneSignal

npm install react-onesignal
# or
yarn add react-onesignal

Étape 3 : Initialisez OneSignal dans votre application Next.js

// pages/_app.js
import { useEffect } from 'react';
import OneSignal from 'react-onesignal';

function MyApp({ Component, pageProps }) {
  useEffect(() => {
    OneSignal.init({
      appId: "YOUR_ONESIGNAL_APP_ID",
      notifyButton: {
        enable: true,
      },
      allowLocalhostAsSecureOrigin: true,
    });
  }, []);

  return <Component {...pageProps} />;
}

export default MyApp;

Étape 4 : Créer une route API pour l'envoi de notifications

// pages/api/sendOneSignalNotification.js
export default async function handler(req, res) {
  if (req.method !== 'POST') {
    return res.status(405).json({ error: 'Method not allowed' });
  }

  const { segments, heading, content } = req.body;

  try {
    const response = await fetch('https://onesignal.com/api/v1/notifications', {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
        'Authorization': `Basic ${process.env.ONESIGNAL_REST_API_KEY}`,
      },
      body: JSON.stringify({
        app_id: process.env.ONESIGNAL_APP_ID,
        included_segments: segments || ['All'],
        headings: { en: heading },
        contents: { en: content },
      }),
    });

    const data = await response.json();
    return res.status(200).json(data);
  } catch (error) {
    console.error('Error sending OneSignal notification:', error);
    return res.status(500).json({ error: error.message });
  }
}

Approche 3 : Utilisation de poutres de poussée

Pusher Beams est un autre excellent service pour mettre en œuvre des notifications push en mettant l'accent sur les capacités en temps réel.

Étape 1 : Configurer le compte Pusher et l'instance Beams

Inscrivez-vous à Pusher et créez une instance Beams.

Étape 2 : Installer le SDK Pusher Beams

npm install @pusher/beams-client
# or
yarn add @pusher/beams-client

Étape 3 : Créer un fournisseur de contexte Beams

// contexts/BeamsContext.jsx
import { createContext, useContext, useEffect, useState } from 'react';
import * as PusherPushNotifications from '@pusher/beams-client';

const BeamsContext = createContext();

export function BeamsProvider({ children }) {
  const [beamsClient, setBeamsClient] = useState(null);
  const [userId, setUserId] = useState(null);

  useEffect(() => {
    if (typeof window !== 'undefined') {
      const client = new PusherPushNotifications.Client({
        instanceId: 'YOUR_INSTANCE_ID',
      });

      client.start()
        .then(() => client.addDeviceInterest('hello'))
        .then(() => {
          console.log('Successfully registered and subscribed!');
          setBeamsClient(client);
        })
        .catch(console.error);
    }
  }, []);

  const subscribeToInterest = (interest) => {
    if (beamsClient) {
      beamsClient.addDeviceInterest(interest)
        .then(() => console.log(`Subscribed to ${interest}`))
        .catch(console.error);
    }
  };

  const unsubscribeFromInterest = (interest) => {
    if (beamsClient) {
      beamsClient.removeDeviceInterest(interest)
        .then(() => console.log(`Unsubscribed from ${interest}`))
        .catch(console.error);
    }
  };

  return (
    <BeamsContext.Provider 
      value={{ 
        beamsClient, 
        subscribeToInterest, 
        unsubscribeFromInterest 
      }}
    >
      {children}
    </BeamsContext.Provider>
  );
}

export const useBeams = () => useContext(BeamsContext);

Étape 4 : Enveloppez votre application avec le fournisseur

// pages/_app.js
import { BeamsProvider } from '../contexts/BeamsContext';

function MyApp({ Component, pageProps }) {
  return (
    <BeamsProvider>
      <Component {...pageProps} />
    </BeamsProvider>
  );
}

export default MyApp;

Étape 5 : Créer une route API pour l'envoi de notifications

// pages/api/sendBeamsNotification.js
import Pusher from '@pusher/push-notifications-server';

export default async function handler(req, res) {
  if (req.method !== 'POST') {
    return res.status(405).json({ error: 'Method not allowed' });
  }

  const { interests, title, body } = req.body;

  try {
    const beamsClient = new Pusher({
      instanceId: process.env.PUSHER_INSTANCE_ID,
      secretKey: process.env.PUSHER_SECRET_KEY,
    });

    const response = await beamsClient.publishToInterests(interests, {
      web: {
        notification: {
          title,
          body,
        },
      },
    });

    return res.status(200).json(response);
  } catch (error) {
    console.error('Error sending Pusher Beams notification:', error);
    return res.status(500).json({ error: error.message });
  }
}

Comparaison des solutions de notifications push

Comparons ces approches pour vous aider à choisir la bonne solution pour votre application Next.js :

Messagerie cloud Firebase (FCM)

Avantages :

  • Utilisation gratuite avec des quotas généreux

  • Excellente intégration avec d'autres services Firebase

  • Bonne documentation et support communautaire

  • Fonctionne bien pour les applications Web et mobiles

  • Intégration directe avec les services Google

Inconvénients :

  • Processus de configuration complexe

  • Nécessite le maintien d'un travailleur de service

  • Personnalisation limitée de l'apparence des notifications

Idéal pour : les applications qui utilisent déjà les services Firebase ou qui ont besoin d’une solution gratuite avec une bonne évolutivité.

OneSignal

Avantages :

  • Facile à installer avec une configuration minimale

  • Excellent tableau de bord pour la gestion des campagnes

  • Excellentes capacités d'analyse et de segmentation

  • Gère les problèmes de compatibilité du navigateur pour vous

  • Niveau gratuit disponible avec des limites généreuses

Inconvénients :

  • Les plans payants peuvent devenir coûteux à grande échelle

  • Moins de contrôle sur la mise en œuvre technique

  • Ajoute des dépendances tierces à votre application

Idéal pour : les entreprises et applications de commerce électronique qui nécessitent une mise en œuvre rapide avec des fonctionnalités d'analyse et de segmentation avancées.

Poutres de poussée

Avantages :

  • API simple pour les notifications en temps réel

  • Bonne documentation et intégration facile

  • Système de livraison fiable

  • Fonctionne bien avec d'autres services Pusher

Inconvénients :

  • Niveau gratuit limité

  • Pas aussi riche en fonctionnalités que OneSignal à des fins marketing

  • Moins mature que FCM

Idéal pour : les applications utilisant déjà les services Pusher ou nécessitant des fonctionnalités en temps réel avec une implémentation simple.

Compatibilité et défis des navigateurs

Lors de la mise en œuvre des notifications push, soyez conscient de ces défis courants :

Assistance Safari et programme pour développeurs Apple

L'obstacle le plus important auquel sont confrontés de nombreux développeurs est la prise en charge de Safari. Comme l'a fait remarquer un développeur sur Reddit :

« Pour envoyer des notifications à Safari, vous devez vous abonner au forfait développeur annuel d'Apple, qui est payant. »

Cette exigence d'un compte développeur Apple payant (99 $/an) constitue un obstacle important pour de nombreux projets, en particulier les plus petits ou ceux en début de développement.

Perception et acceptation des utilisateurs

Un autre défi réside dans la perception des utilisateurs. Nombre d'entre eux déclinent instinctivement les demandes de notifications push web :

« Quand un site web me demande si je souhaite autoriser les notifications, je n'y pense même pas, je dis simplement non. Mais si une application mobile me le demande, je lui laisse généralement une chance avant de la désactiver. »

Cela souligne l’importance de chronométrer votre demande d’autorisation et d’expliquer la valeur des notifications avant de demander l’autorisation.

Complexité technique

Les systèmes de notification push sont intrinsèquement complexes :

« Le push pose TOUJOURS des problèmes. Entre son manque de fiabilité et sa difficulté à mettre en œuvre, c'est vraiment pénible. »

Cette complexité rend les services tiers particulièrement attractifs pour de nombreux développeurs, notamment pour les applications de commerce électronique :

« Si votre entreprise est un commerce électronique, je choisirais un service, construire à partir de zéro demanderait trop de travail. »

Bonnes pratiques pour les notifications push dans Next.js

Pour maximiser l'efficacité de vos notifications push :

1. Demandez la permission au bon moment

Ne demandez pas immédiatement l'autorisation à un utilisateur lorsqu'il visite votre site. Attendez qu'il interagisse avec votre contenu et comprenne l'intérêt de vos notifications.

2. Communiquez clairement la valeur

Expliquez quels types de notifications vous enverrez et comment elles bénéficieront à l'utilisateur avant de demander l'autorisation.

3. Personnaliser et segmenter

Utilisez les données utilisateur pour envoyer des notifications pertinentes plutôt que des messages génériques à tout le monde.

4. Respectez la fréquence et le timing

Ne submergez pas les utilisateurs avec trop de notifications. Tenez compte des fuseaux horaires et envoyez les notifications aux heures appropriées.

5. Facilitez la désinscription

Fournissez toujours aux utilisateurs un moyen clair de se désabonner ou de gérer leurs préférences de notification.

Conclusion

L'intégration de notifications push dans une application Next.js peut considérablement améliorer l'engagement et la fidélisation des utilisateurs. Malgré des défis techniques, notamment en termes de compatibilité avec les navigateurs et d'acceptation par les utilisateurs, les avantages l'emportent souvent sur la complexité.

Pour la plupart des développeurs, en particulier ceux qui travaillent sur des applications de commerce électronique ou qui n'ont pas d'expertise spécifique en matière de notifications push, l'utilisation d'un service tiers comme OneSignal ou Pusher Beams fournira le chemin le plus rapide vers la mise en œuvre avec le moins de frais techniques.

Pour ceux qui utilisent déjà Firebase ou qui ont besoin de plus de contrôle sur la mise en œuvre, FCM propose une solution robuste et gratuite qui s'intègre bien avec d'autres services.

Quelle que soit l'approche choisie, veillez à respecter l'attention de vos utilisateurs et à leur offrir une réelle valeur ajoutée grâce à vos notifications. Cela garantira leur engagement et leur intérêt pour votre application sur le long terme.

Ressources supplémentaires

  • Guide des notifications Web Push - Documentation complète de MDN

  • Firebase Cloud Messaging – Documentation officielle du FCM

  • Documentation OneSignal - Guides de mise en œuvre de OneSignal

  • Documentation des poutres poussoirs - Guides officiels des poutres poussoirs

  • Documentation Next.js - Pour les questions générales sur l'implémentation de Next.js

Powered by Synscribe

Table des matières
  • Comprendre les notifications push
  • Principaux services et API de notification push
  • Avantages de la mise en œuvre des notifications push
  • Implémentation des notifications push dans Next.js&nbsp;: différentes approches
  • Approche 1&nbsp;: Création avec Firebase Cloud Messaging (FCM)
  • Approche 2&nbsp;: Utilisation de OneSignal
  • Approche 3&nbsp;: Utilisation de poutres de poussée
  • Comparaison des solutions de notifications push
  • Messagerie cloud Firebase (FCM)
  • OneSignal
  • Poutres de poussée
  • Compatibilité et défis des navigateurs
  • Assistance Safari et programme pour développeurs Apple
  • Perception et acceptation des utilisateurs
  • Complexité technique
  • Bonnes pratiques pour les notifications push dans Next.js
  • 1. Demandez la permission au bon moment
  • 2. Communiquez clairement la valeur
  • 3. Personnaliser et segmenter
  • 4. Respectez la fréquence et le timing
  • 5. Facilitez la désinscription
  • Conclusion
  • Ressources supplémentaires
Publié le 22 août 2025
#Technologie#Tutoriels
Partager cet article
Partager sur XPartager sur LinkedInPartager sur Facebook
Chargement...
Articles associés
Avantages et inconvénients de Flutter pour le développement mobile hybride

Avantages et inconvénients de Flutter pour le développement mobile hybride

Avant de retenir Flutter comme notre technologie hybride préférée, nous avons essayé plusieurs autres solutions au cours des années. Malgré leurs mérites respectifs, elles présentaient toutes des inconvénients suffisamment importants pour ne pas y investir trop de temps et d'énergie. Voici une rapide rétrospective de celles que nous avons essayées et ce que nous en pensons.

Lire l'article
Guide ultime du CI/CD : fondamentaux de la mise en œuvre avancée

Guide ultime du CI/CD : fondamentaux de la mise en œuvre avancée

L'intégration continue/livraison continue ( CI/CD ) a révolutionné la façon dont les équipes logicielles créent de la valeur pour leurs utilisateurs. Finies les déploiements manuels et les casse-têtes d'intégration ; le développement moderne exige automatisation, fiabilité et rapidité. Fondamentalement, le CI/CD consiste à créer un pipeline fluide qui achemine le code de l'environnement de développement jusqu'à la production et intègre les retours en temps réel. Le CI aide les équipes à identifier les problèmes en amont, avant qu'ils ne deviennent coûteux, en garantissant que les modifications de code sont fréquemment fusionnées dans un référentiel partagé, testées et validées automatiquement. Le CD étend ce processus en automatisant les déploiements, rendant ainsi les versions prévisibles et sans stress.

Lire l'article
Pourquoi apprendre Vue.js en 2025 ?

Pourquoi apprendre Vue.js en 2025 ?

L’une des grandes forces de Vue.js est d’être progressif : vous pouvez faire une application très simple sans étape de build juste avec la librairie core, mais vous pouvez aussi faire une application très complexe avec beaucoup d’étapes de build automatisés, une gestion des routes, de l’état de l’application etc.

Lire l'article
Pourquoi faire appel à une agence web ?

Pourquoi faire appel à une agence web ?

En tant que dirigeant ou responsable marketing/commercial, vous vous posez sans doute la question s’il vaut mieux recourir à une agence digitale pour vous accompagner dans vos projets web ou réaliser vos projets directement en interne. Cette décision se fonde bien souvent sur le critère financier et sur quelques a priori persistants. Pourtant, avez-vous également pris en compte tous les atouts qu’une agence peut vous apporter, tant sur le plan de votre organisation interne, que sur vos performances futures ?

Lire l'article