Partager via


Réengager les utilisateurs avec des badges et des notifications

Les Web Apps progressives (PWA) sont en mesure d’effectuer des tâches lorsque l’application n’est pas en cours d’exécution, comme la mise à jour des données dans le cache ou l’envoi de messages lorsque l’appareil retrouve la connectivité. Pour ce faire, utilisez les API suivantes, qui sont décrites dans Synchroniser et mettre à jour une PWA en arrière-plan :

  • API de synchronisation en arrière-plan
  • API périodique de synchronisation en arrière-plan
  • API d’extraction d’arrière-plan

Pour réengager l’utilisateur avec l’application une fois une tâche en arrière-plan terminée, vous pouvez utiliser des notifications et des badges. Pour ce faire, utilisez les API suivantes :

  • API de badging d’application
  • Notifications API

Les badges sont conviviaux et peuvent être utilisés fréquemment. Les badges n’interrompent pas le flux de travail de l’utilisateur et sont utiles pour afficher une petite quantité d’informations, telles que le nombre de messages reçus.

Les notifications sont utiles pour que les applications participent au centre de notifications du système et affichent des images et des informations textuelles. Les notifications sont utiles pour avertir l’utilisateur d’un changement d’état important dans votre application. Toutefois, les notifications doivent être utilisées rarement, car elles ont tendance à perturber le flux de travail de l’utilisateur.

Afficher un badge sur l’icône de l’application

Les PWA peuvent afficher un badge sur l’icône de leur application à l’aide de l’API App Badging. Le badge peut être vide ou contenir un nombre.

Rechercher le support technique

Avant d’utiliser l’API App Badging, commencez par case activée si l’API App Badging est prise en charge dans le moteur de navigateur dans lequel votre application s’exécute, comme suit :

if (navigator.setAppBadge) {
    console.log("The App Badging API is supported!");
}

Affichage du badge

Pour définir le badge, utilisez le code suivant à partir de votre serveur frontal d’application ou de votre worker de service.

// To display an empty badge
navigator.setAppBadge();

// To display a number in the badge
navigator.setAppBadge(42);

Icône PWA dans la barre des tâches Windows, avec un badge montrant le numéro 42

La setAppBadge fonction retourne une promesse, qui peut être utilisée pour savoir quand le badge a été ajouté et pour intercepter les erreurs potentielles, comme suit :

navigator.setAppBadge(42).then(() => {
    console.log("The badge was added");
}).catch(e => {
    console.error("Error displaying the badge", e);
});

Effacement du badge

Pour supprimer le badge sur l’icône de l’application, utilisez le code suivant de votre serveur frontal ou de service Worker :

navigator.clearAppBadge();

Retourne clearAppBadge également une promesse qui peut être utilisée pour gérer les erreurs potentielles.

Une autre façon d’effacer un badge consiste à appeler setAppBadge à nouveau, mais à passer 0 comme valeur, cette fois :

navigator.setAppBadge(0);

Afficher les notifications dans le centre de notifications

Les PWA peuvent afficher des notifications à l’aide de l’API Notifications.

Rechercher le support technique

Avant d’utiliser l’API, case activée qu’elle est prise en charge, comme suit :

if ("Notification" in window) {
    console.log("The Notifications API is supported");
}

Demander l’autorisation

L’API Notifications ne peut être utilisée qu’après avoir demandé à l’utilisateur l’autorisation d’afficher des messages. Pour demander l’autorisation, utilisez la requestPermission fonction , comme indiqué ci-dessous.

La demande d’autorisation doit être effectuée uniquement en réponse à une action de l’utilisateur. Il s’agit d’une bonne pratique pour éviter d’interrompre l’utilisateur avec des invites d’autorisation lorsque l’utilisateur n’a pas encore interagi avec une fonctionnalité qui utilise des notifications.

button.addEventListener("click", () => {
    Notification.requestPermission().then(permission => {
        if (permission === "granted") {
            console.log("The user accepted");
        }
    });
});

Vous pouvez case activée l’autorisation status plus tard :

if (Notification.permission === "granted") {
    console.log("The user already accepted");
}

Afficher la notification

Une fois que vous savez que l’API est prise en charge et que l’utilisateur a accepté les notifications, vous pouvez afficher une notification en créant un Notification objet :

const notification = new Notification("Hello World!");

Notification texte uniquement

Le code ci-dessus affiche un message de notification texte uniquement, mais vous pouvez également personnaliser le message en incluant des propriétés et icon supplémentaires body :

const notification = new Notification("Hello World!", {
    body: "This is my first notification message",
    icon: "/assets/logo-192.png",
});

Notification avec du texte et une image

Vous pouvez également afficher des notifications du worker de service de votre application. Cela est utile, car le service Worker peut effectuer un travail pendant que votre application n’est pas en cours d’exécution. Pour envoyer une notification de votre service Worker, utilisez la ServiceWorkerRegistration.showNotification fonction :

self.registration.showNotification("Hello from the service worker!");

La showNotification fonction prend en charge les mêmes arguments que le Notification constructeur utilisé dans l’exemple précédent. La showNotification fonction prend également en charge la actions propriété , qui est décrite dans la section suivante.

Ajouter des actions aux notifications

Dans une notification, il est possible d’ajouter des actions que l’utilisateur doit effectuer. Cela n’est pris en charge que dans les notifications persistantes qui sont affichées à l’aide de la ServiceWorkerRegistration.showNotification fonction .

self.registration.showNotification("Your content is ready", {
    body: "Your content is ready to be viewed. View it now?",
    icon: "/assets/logo-192.png",
    actions: [
        {
            action: "view-content",
            title: "Yes"
        },
        {
            action: "go-home",
            title: "No"
        }
    ]
});

Une notification avec du texte, une image et deux actions

Lorsque l’utilisateur clique sur l’un des boutons d’action, votre PWA peut gérer le clic en écoutant l’événement notificationclick . Lorsqu’un notificationclick événement est reçu, fermez la notification et exécutez du code :

self.addEventListener('notificationclick', event => {
    // Close the notification.
    event.notification.close();

    // React to the action.
    if (event.action === 'view-content') {
        console.log("view-content action was clicked");
    } else if (event.action === 'go-home') {
        console.log("go-home action was clicked");
    } else {
        console.log("main body of the notification was clicked");
    }
}, false);

Pour en savoir plus sur les actions de notification, consultez Notification.actions sur MDN.