Push API

Expérimental: Cette fonction est expérimentale
Puisque cette fonction est toujours en développement dans certains navigateurs, veuillez consulter le tableau de compatibilité pour les préfixes à utiliser selon les navigateurs.
Il convient de noter qu'une fonctionnalité expérimentale peut voir sa syntaxe ou son comportement modifié dans le futur en fonction des évolutions de la spécification.

L' API Push donne aux applications web la possibilité de recevoir des messages qui leur sont poussés depuis un serveur, qu'il s'agisse ou non d'une application active au premier plan, ou même actuellement chargée, sur un agent utilisateur. Ceci permet aux développeurs de délivrer des notifications asynchrones et des mises-à-jour aux utilisateurs qui le choisissent, entrainant un meilleur engagement [de l'utilisateur] avec du nouveau contenu au moment opportun.

Note : Cette documentation couvre les spécifications W3C de l'API Push; si vous recherchez la documentation du système propriétaire de Push de Firefox OS, merci de vous reporter à Simple Push.

Concepts et usages de Push

Attention : Lors de la mise en œuvre des abonnements PushManager, il est d'une importance vitale de se protéger contre les problèmes de CSRF/XSRF dans votre application. Voir les articles suivants pour plus d'informations :

Pour qu'une application web puisse recevoir des messages Push, elle doit avoir un service worker (en-US) actif. Quand le service worker est actif, on peut souscrire aux notifications Push en utilisant PushManager.subscribe().

L'élément PushSubscription (en-US) qui en résulte inclut toutes les informations dont l'application a besoin pour transmettre un message Push: un point de terminaison et la clé de chiffrement nécessaire à l'envoi des données.

Le service worker sera démarré, comme nécessaire, pour réceptionner les messages Push, qui sont délivrés au gestionnaire d'évènement ServiceWorkerGlobalScope.onpush. Ceci permet aux applications de réagir au message Push reçu, par exemple en affichant une notification (en utilisant ServiceWorkerRegistration.showNotification().)

Chaque souscription est unique à un service worker. Le point de terminaison de la souscription est une URL fonctionnelle unique: la connaissance du point de terminaison est tout ce qui est nécessaire pour envoyer un message à votre application. L'URL du point de terminaison doit cependant rester secrète, sinon d'autres applications seront capables d'envoyer des messages Push à votre application.

Activer un service worker pour délivrer un message Push peut accroître l'utilisation des ressources, particulièrement de la batterie. Les différents navigateurs ont des régimes différents pour gèrer ça — Il n'y a pas de mécanisme standard. Firefox permet à un nombre limité (quota) de messages Push d'être envoyé à une application, cependant les messages Push qui générent les notifications sont exempts de cette limite. La limite est rafraichie chaque fois que le site est visité. En comparaison, Chrome n'applique pas de limites mais nécessite que chaque message Push lance une notification pour pouvoir être affiché.

Note : Comme pour Gecko 44, le quota de messages Push par application n'est pas incrémenté quand une nouvelle notification se lance et qu'une autre est déjà visible, pendant une période de 3 secondes. Cela permet de gèrer le cas où une rafale de messages Push est reçue et qu'ils n'afficheraient pas tous une notification.

Note : Chrome nécessite actuellement de configurer un projet sur Google Cloud Messaging pour envoyer des messages Push et utilise le numero du projet associé ainsi que la clé durant l'envoi des messages Push. Il requiert aussi un manifeste applicatif avec des paramètres spéciaux pour utiliser ce service. Nous espérons que cette restriction sera supprimée dans le futur..

Interfaces

PushEvent

Représente une action push envoyée à l'élément de portée global (en-US) (global scope) d'un ServiceWorker. Elle contient les informations envoyées depuis l'application à un PushSubscription (en-US).

PushManager

Fournit un moyen de recevoir des notifications de serveurs tiers ainsi que de demander les URL pour les notifications Push. Cette interface remplace les fonctionnalités obsolètes de l'interface PushRegistrationManager.

PushMessageData (en-US)

Fournit l'accès pour pousser des données transmises par un serveur et inclut des méthodes pour manipuler les données reçues.

PushSubscription (en-US)

Fournit une URL de point de terminaison et permet la désinscription à un service Push.

Complément au Service worker

Les ajouts à l'API Service Worker suivants ont été spécifiés dans l'API Push, pour fournir un point d'entrée à l'utilisation de messages Push pour surveiller et répondre aux évènements de changement liés aux messages Push et aux souscriptions.

ServiceWorkerRegistration.pushManager (en-US) Lecture seule

Retourne une référence de l'interface PushManager pour gèrer les souscriptions push incluant la souscription, récupèrer une souscription existante, et accèder au statut des permissions push. C'est le point d'entrée dans l'utilisation de la communication push.

ServiceWorkerGlobalScope.onpush

Un gestionnaire d'événement lancé chaque fois qu'un événement push (en-US) se produit ; c'est à chaque fois qu'un message push du serveur est reçu.

ServiceWorkerGlobalScope.onpushsubscriptionchange

Un gestionnaire d'événement lancé chaque fois qu'un événement pushsubscriptionchange (en-US) se produit; par exemple, quand une souscription push a été invalidée, ou va être invalidée (c.à.d. quand un service push définit une durée d'expiration).

Spécifications

Specification
Push API
# pushevent-interface
Push API
# pushmessagedata-interface

Compatibilité des navigateurs

api.PushEvent

BCD tables only load in the browser

api.PushMessageData

BCD tables only load in the browser

Voir aussi