Push API

Cet article nécessite une relecture rédactionnelle. Voici comment vous pouvez aider.

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

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

L'élément PushSubscription qui en résulte inclut toute les informations dont l'application a besoin pour transmettre un message Push: un point de terminaison et la clé de chiffrement necessaire à 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, cependants les messages Push qui générent les notifications sont exempts de cette limite. La limite est raffraichie chaque fois que le site visité. En comparaison, Chrome n'applique pas de limite mais nécéssite que chaque message Push lance une notification pour pouvoir être affiché.

Note: As of 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é et la clé durant l'envoi des messages Push. I requiert aussi un manifeste applicatif avec des paramètres spéciaux pour utiliser ce service. Nous esperons 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 (global scope) d'un ServiceWorker. Elle contient les informations envoyées depuis l'application à un PushSubscription.
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
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
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é à l'utilisation de messages Push messages, et pour surveiller et répondre aux événements de changement liés aux messages push et aux souscriptions.

ServiceWorkerRegistration.pushManager 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é dans l'utilisation de la communication push.
ServiceWorkerGlobalScope.onpush
Un gestionnaire d'événement lancé chaque fois qu'un événement push 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 se produit; par exemple, quand une souscription push a été invalidée, ou va être invalidée (c.à.d. quand un service push défini une durée d'expiration).

Spécifications

Spécification Statut Commentaire
Push API Version de travail Définition initiale

Compatibilité des navigateurs

Fonctionnalité Chrome Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
Support de base 42.0 44.0 (44.0)[1][3] Pas de support[2] ? ?
PushEvent.data,
PushMessageData
Pas de support 44.0 (44.0)[3] Pas de support Pas de support Pas de support
Fonctionnalité Android Android Webview Firefox Mobile (Gecko) Firefox OS IE Mobile Opera Mobile Safari Mobile Chrome pour Android
Support de base Pas de support Pas de support 48.0 (48.0)[4] Pas de support ?[2] ? ? 42.0
PushEvent.data,
PushMessageData
Pas de support Pas de support 48.0 (48.0)[4] Pas de support Pas de support Pas de support Pas de support Pas de support

Voir aussi

Étiquettes et contributeurs liés au document

 Contributeurs à cette page : nicolashenry, JeffD
 Dernière mise à jour par : nicolashenry,