Dans cet atelier de programmation, vous allez utiliser les fonctionnalités de base de l'API Notifications pour:
- Demander l'autorisation d'envoyer des notifications
- Envoyer des notifications
- Tester les options de notification
Remixer l'application exemple et l'afficher dans un nouvel onglet
Les notifications sont automatiquement bloquées dans l'application Glitch intégrée. Vous ne pourrez donc pas prévisualiser l'application sur cette page. Voici ce que vous devez faire:
- Cliquez sur Remixer pour modifier pour rendre le projet modifiable.
- Pour prévisualiser le site, appuyez sur Afficher l'application, puis sur Plein écran .
Glitch devrait s'ouvrir dans un nouvel onglet Chrome:
Au cours de cet atelier de programmation, modifiez le code dans Glitch intégré sur cette page. Actualisez le nouvel onglet avec votre application en direct pour voir les modifications.
Se familiariser avec l'application de démarrage et son code
Commencez par consulter l'application en direct dans le nouvel onglet Chrome:
Appuyez sur Ctrl+Maj+J (ou Cmd+Option+J sur Mac) pour ouvrir DevTools. Cliquez sur l'onglet Console.
Le message suivant s'affiche dans la console:
Notification permission is default
Si vous ne savez pas ce que cela signifie, ne vous inquiétez pas, tout sera bientôt révélé !
Cliquez sur les boutons de l'application en ligne: Demander l'autorisation d'envoyer des notifications et Envoyer une notification.
La console affiche des messages "À FAIRE" à partir de quelques bouchons de fonction:
requestPermission
etsendNotification
. Voici les fonctions que vous allez implémenter dans cet atelier de programmation.
Voyons maintenant le code de l'application exemple dans Glitch intégré sur cette page.
Ouvrez public/index.js
et examinez certaines parties importantes du code existant:
La fonction
showPermission
utilise l'API Notifications pour obtenir l'état d'autorisation actuel du site et le consigner dans la console:// Print current permission state to console;
// update onscreen message.
function showPermission() {
let permission = Notification.permission;
console.log('Notification permission is ' + permission);
let p = document.getElementById('permission');
p.textContent = 'Notification permission is ' + permission;
}Avant de demander l'autorisation, l'état de l'autorisation est
default
. Dans l'état d'autorisationdefault
, un site doit demander l'autorisation et l'obtenir avant de pouvoir envoyer des notifications.La fonction
requestPermission
est un bouchon:// Use the Notification API to request permission to send notifications.
function requestPermission() {
console.log('TODO: Implement requestPermission()');
}Vous allez implémenter cette fonction à l'étape suivante.
La fonction
sendNotification
est un bouchon:// Use the Notification constructor to create and send a new Notification.
function sendNotification() {
console.log('TODO: Implement sendNotification()');
}Vous implémenterez cette fonction après avoir implémenté
requestPermission
.L'écouteur d'événements
window.onload
appelle la fonctionshowPermission
lors du chargement de la page, affichant l'état actuel de l'autorisation dans la console et sur la page:window.onload = () => { showPermission(); };
Demander l'autorisation d'envoyer des notifications
À cette étape, vous allez ajouter une fonctionnalité permettant de demander à l'utilisateur l'autorisation d'envoyer des notifications.
Vous utiliserez la méthode Notification.requestPermission()
pour déclencher une fenêtre pop-up demandant à l'utilisateur d'autoriser ou de bloquer les notifications de votre site.
Remplacez le bouchon de fonction
requestPermission
dans public/index.js par le code suivant:// Use the Notification API to request permission to send notifications.
function requestPermission() {
Notification.requestPermission()
.then((permission) => {
console.log('Promise resolved: ' + permission);
showPermission();
})
.catch((error) => {
console.log('Promise was rejected');
console.log(error);
});
}Actualisez l'onglet Chrome dans lequel vous consultez votre application en direct.
Dans l'interface de l'application en ligne, cliquez sur Demander l'autorisation d'envoyer des notifications. Un pop-up s'affiche.
L'utilisateur peut choisir l'une des trois réponses au pop-up d'autorisation.
Réponse de l'utilisateur | État de l'autorisation de notification |
---|---|
L'utilisateur sélectionne Autoriser. | granted |
L'utilisateur sélectionne Bloquer. | denied |
L'utilisateur ferme le pop-up sans effectuer de sélection | default |
Si l'utilisateur clique sur "Autoriser" :
La propriété
Notification.permission
est définie surgranted
.Le site pourra afficher des notifications.
Les appels ultérieurs à
Notification.requestPermission
seront résolus engranted
sans fenêtre pop-up.
Si l'utilisateur clique sur "Bloquer" :
La propriété
Notification.permission
est définie surdenied
.Le site ne pourra pas afficher de notifications à l'utilisateur.
Les appels ultérieurs à
Notification.requestPermission
seront résolus endenied
sans fenêtre pop-up.
Si l'utilisateur ferme le pop-up:
Notification.permission
reste inchangé et vautdefault
.Le site ne pourra pas afficher de notifications à l'utilisateur.
Les appels ultérieurs à
Notification.requestPermission
génèrent d'autres pop-ups.Toutefois, si l'utilisateur continue de fermer les pop-ups, le navigateur peut bloquer le site, en définissant
Notification.permission
surdenied
. L'utilisateur ne peut alors plus voir les pop-ups de demande d'autorisation ni les notifications.Au moment de la rédaction de cet article, le comportement du navigateur en réponse aux pop-ups d'autorisation de notifications ignorés est susceptible d'être modifié. Le meilleur moyen de gérer cette situation est de toujours demander l'autorisation d'envoyer des notifications en réponse à une interaction initiée par l'utilisateur afin qu'il s'y attende et sache ce qui se passe.
Envoyer une notification
Au cours de cette étape, vous allez envoyer une notification à l'utilisateur.
Vous allez utiliser le constructeur Notification
pour créer une notification et essayer de l'afficher.
Si l'état de l'autorisation est granted
, votre notification s'affiche.
Remplacez le bouchon de fonction
sendNotification
dans index.js par le code suivant:// Use the Notification constructor to create and send a new Notification.
function sendNotification() {
let title = 'Test';
let options = {
body: 'Test body',
// Other options can go here
};
console.log('Creating new notification');
let notification = new Notification(title, options);
}Le constructeur
Notification
utilise deux paramètres:title
etoptions
.options
est un objet dont les propriétés représentent les paramètres visuels et les données que vous pouvez inclure dans une notification. Pour en savoir plus, consultez la documentation MDN sur les paramètres de notification.Actualisez l'onglet Chrome dans lequel vous consultez votre application en direct, puis cliquez sur le bouton Envoyer une notification. Une notification avec le texte
Test body
devrait s'afficher.
Que se passe-t-il lorsque vous envoyez des notifications sans autorisation ?
À cette étape, vous allez ajouter quelques lignes de code qui vous permettront de voir ce qui se passe lorsque vous essayez d'afficher une notification sans l'autorisation de l'utilisateur.
- Dans
public/index.js
, à la fin de la fonctionsendNotification
, définissez le gestionnaire d'événementsonerror
de la nouvelle notification:
// Use the Notification constructor to create and send a new Notification.
function sendNotification() {
let title = 'Test';
let options = {
body: 'Test body',
// Other options can go here
};
console.log('Creating new notification');
let notification = new Notification(title, options);
notification.onerror = (event) => {
console.log('Could not send notification');
console.log(event);
};
}
Pour observer une erreur d'autorisation de notification:
Cliquez sur l'icône en forme de cadenas à côté de la barre d'URL de Chrome et rétablissez la valeur par défaut pour l'autorisation de notifications du site.
Cliquez sur Demander l'autorisation d'envoyer des notifications, puis sélectionnez Bloquer dans le pop-up.
Cliquez sur Envoyer une notification et observez ce qui se passe. Le texte d'erreur (
Could not send notification
) et l'objet de l'événement sont consignés dans la console.
Vous pouvez éventuellement réinitialiser à nouveau les autorisations de notification du site. Vous pouvez essayer de demander l'autorisation et de fermer le pop-up plusieurs fois pour voir ce qui se passe.
Tester les options de notification
Vous avez maintenant vu les principes de base pour demander une autorisation et envoyer des notifications. Vous avez également vu l'impact des réponses des utilisateurs sur la capacité de votre application à afficher des notifications.
Vous pouvez désormais tester les nombreuses options visuelles et de données disponibles lorsque vous créez une notification. Vous trouverez ci-dessous l'ensemble des options disponibles. (Pour en savoir plus sur ces options, consultez la documentation sur les notifications sur MDN.)
Notez que les navigateurs et les appareils implémentent ces options différemment. Il est donc utile de tester vos notifications sur différentes plates-formes pour voir à quoi elles ressemblent.
let options = {
dir: 'auto', // Text direction
lang: 'en-US', // A language tag
badge: '/orange-cat.png', // Display when insufficient room
body: 'Hello World', // Body text
tag: 'mytag', // Tag for categorization
icon: '/line-cat.png', // To display in the notification
image: '/orange-cat.png', // To display in the notification
data: { // Arbitrary data; any data type
cheese: 'I like cheese',
pizza: 'Excellent cheese delivery mechanism',
arbitrary: {
faveNumber: 42,
myBool: true
}},
vibrate: [200, 100, 200], // Vibration pattern for hardware
renotify: false, // Notify if replaced? Default false
requireInteraction: false,// Active until click? Default false
/*
actions: // Array of NotificationActions
// Only usable with a service worker
[{
action: 'shop',
title: 'Shop!',
icon: '/bags.png'
},],
*/
}
Pour obtenir d'autres idées, consultez le générateur de notifications de Peter Beverloo.
Si vous avez rencontré des difficultés, voici le code final de cet atelier de programmation: glitch.com/edit/#!/codelab-notifications-get-started-completed
Pour en savoir plus, consultez l'atelier de programmation suivant de cette série, Gérer les notifications avec un service worker.