Push API

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

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 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 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 (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é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 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 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éfinit une durée d'expiration).

Spécifications

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

Compatibilité des navigateurs

PushEvent

Update compatibility data on GitHub
OrdinateurMobile
ChromeEdgeFirefoxInternet ExplorerOperaSafariWebview AndroidChrome pour AndroidFirefox pour AndroidOpera pour AndroidSafari sur iOSSamsung Internet
PushEvent
Expérimentale
Chrome Support complet 42Edge Support complet 16
Désactivée
Support complet 16
Désactivée
Désactivée From version 16: this feature is behind the Enable service workers preference.
Support complet 17
Firefox Support complet 44
Notes
Support complet 44
Notes
Notes Extended Support Releases (ESR) before Firefox 78 ESR do not support service workers and the Push API.
IE Aucun support NonOpera Support complet 37Safari Aucun support NonWebView Android Aucun support NonChrome Android Support complet 42Firefox Android Support complet 44
Support complet 44
Support complet 48
Notes
Notes Push enabled by default.
Opera Android Support complet 37Safari iOS Aucun support NonSamsung Internet Android Support complet 4.0
PushEvent() constructor
Expérimentale
Chrome Support complet 42Edge Support complet 16
Désactivée
Support complet 16
Désactivée
Désactivée From version 16: this feature is behind the Enable service workers preference.
Support complet 17
Firefox Support complet 44
Notes
Support complet 44
Notes
Notes Extended Support Releases (ESR) before Firefox 78 ESR do not support service workers and the Push API.
IE Aucun support NonOpera Support complet 37Safari Aucun support NonWebView Android Aucun support NonChrome Android Support complet 42Firefox Android Support complet 44
Support complet 44
Support complet 48
Notes
Notes Push enabled by default.
Opera Android Support complet 37Safari iOS Aucun support NonSamsung Internet Android Support complet 4.0
data
Expérimentale
Chrome Support complet 57Edge Support complet 16
Désactivée
Support complet 16
Désactivée
Désactivée From version 16: this feature is behind the Enable service workers preference.
Support complet 17
Firefox Support complet 44
Notes
Support complet 44
Notes
Notes Extended Support Releases (ESR) before Firefox 78 ESR do not support service workers and the Push API.
IE Aucun support NonOpera Support complet 44Safari Aucun support NonWebView Android Aucun support NonChrome Android Support complet 57Firefox Android Support complet 44
Support complet 44
Support complet 48
Notes
Notes Push enabled by default.
Opera Android Support complet 43Safari iOS Aucun support NonSamsung Internet Android Support complet 4.0

Légende

Support complet  
Support complet
Aucun support  
Aucun support
Fonctionnalité expérimentale. Celle-ci peut être amenée à changer par la suite.
Fonctionnalité expérimentale. Celle-ci peut être amenée à changer par la suite.
Voir les notes d'implémentation.
Voir les notes d'implémentation.
Une action explicite de l'utilisateur est nécessaire pour activer cette fonctionnalité.
Une action explicite de l'utilisateur est nécessaire pour activer cette fonctionnalité.

PushMessageData

Update compatibility data on GitHub
OrdinateurMobile
ChromeEdgeFirefoxInternet ExplorerOperaSafariWebview AndroidChrome pour AndroidFirefox pour AndroidOpera pour AndroidSafari sur iOSSamsung Internet
PushMessageData
Expérimentale
Chrome Support complet 50Edge Support complet ≤79Firefox Support complet 44
Notes
Support complet 44
Notes
Notes Extended Support Releases (ESR) before Firefox 78 ESR do not support service workers and the Push API.
IE Aucun support NonOpera Support complet 37Safari Aucun support NonWebView Android Aucun support NonChrome Android Support complet 50Firefox Android Support complet 48Opera Android Support complet 37Safari iOS Aucun support NonSamsung Internet Android Support complet 5.0
arrayBuffer
Expérimentale
Chrome Support complet 50Edge Support complet ≤79Firefox Support complet 44
Notes
Support complet 44
Notes
Notes Extended Support Releases (ESR) before Firefox 78 ESR do not support service workers and the Push API.
IE Aucun support NonOpera Support complet 37Safari Aucun support NonWebView Android Aucun support NonChrome Android Support complet 50Firefox Android Support complet 48Opera Android Support complet 37Safari iOS Aucun support NonSamsung Internet Android Support complet 5.0
blob
Expérimentale
Chrome Support complet 50Edge Support complet ≤79Firefox Support complet 44
Notes
Support complet 44
Notes
Notes Extended Support Releases (ESR) before Firefox 78 ESR do not support service workers and the Push API.
IE Aucun support NonOpera Support complet 37Safari Aucun support NonWebView Android Aucun support NonChrome Android Support complet 50Firefox Android Support complet 48Opera Android Support complet 37Safari iOS Aucun support NonSamsung Internet Android Support complet 5.0
json
Expérimentale
Chrome Support complet 50Edge Support complet ≤79Firefox Support complet 44
Notes
Support complet 44
Notes
Notes Extended Support Releases (ESR) before Firefox 78 ESR do not support service workers and the Push API.
IE Aucun support NonOpera Support complet 37Safari Aucun support NonWebView Android Aucun support NonChrome Android Support complet 50Firefox Android Support complet 48Opera Android Support complet 37Safari iOS Aucun support NonSamsung Internet Android Support complet 5.0
text
Expérimentale
Chrome Support complet 50Edge Support complet ≤79Firefox Support complet 44
Notes
Support complet 44
Notes
Notes Extended Support Releases (ESR) before Firefox 78 ESR do not support service workers and the Push API.
IE Aucun support NonOpera Support complet 37Safari Aucun support NonWebView Android Aucun support NonChrome Android Support complet 50Firefox Android Support complet 48Opera Android Support complet 37Safari iOS Aucun support NonSamsung Internet Android Support complet 5.0

Légende

Support complet  
Support complet
Aucun support  
Aucun support
Fonctionnalité expérimentale. Celle-ci peut être amenée à changer par la suite.
Fonctionnalité expérimentale. Celle-ci peut être amenée à changer par la suite.
Voir les notes d'implémentation.
Voir les notes d'implémentation.

Voir aussi