Push API

Esta es una tecnolog铆a experimental
Comprueba la Tabla de compabilidad de navegadores cuidadosamente antes de usarla en producci贸n.

La API Push otorga a las aplicaciones web la habilidad de recibir mensajes enviados a ellas desde un servidor, sin importar si la aplicaci贸n est谩 o no en primer plano o cargada. Esto permite a los desarrolladores enviar notificaciones as铆ncronas y actualizaciones para los usuarios que las aceptan.

Nota: Esta documentaci贸n cubre la especificaci贸n del API Push de W3C; si est谩s buscando la documentaci贸n para el mecanismo push propio de Firefox OS, ve Simple Push.

Push conceptos y uso

Para que una aplicaci贸n recib谩 mensajes push, esta debe tener un service worker. Cuando el service worker esta activo, se puede suscribir usando PushManager.subscribe().

El resultado de PushSubscription incluye toda la informaci贸n que la aplicaci贸n necesita para enviar un mensaje push: un endpoint y la llave de cifrado necesaria para enviar los datos.

El service worker se iniciar谩 cuando sea necesario manejar mensajes push entrantes, que se entregan al manejador de eventos. Esto permite a las aplicaciones reaccionar a los mensajes push recibidos, por ejemplo para mostrar una notiificaci贸n usando ServiceWorkerRegistration.showNotification().

Cada suscripci贸n es unica para un service worker. El endpoint para la subscripci贸n es una unica capability URL: el conocimiento del endpoint es todo lo se necesita para enviar un mensaje a tu aplicaci贸n. La URL del endpoint  por lo tanto necesita ser mantenida secreta, u otras aplicaciones podr铆an ser capases de enviar mensajes push a tu aplicaci贸n.

Activar un Service-Worker para entregar un mensaje push puede resultar en el incremento de uso de recursos, especialmente de la bater铆a. Los diferentes navegadores disponen de diferentes esquemas para manejar esto - en la actualidad no existe un mecanismo est谩ndar para ello. Firefox permite un numero limitado (det. cuota) de mensajes push para enviar a una aplicaci贸n, aunque los mensajes push que generan una notificaci贸n estan exentos de este l铆mite. Este l铆mite se actualiza cada vez que se visita el sitio web. En comparaci贸n, Chrome no aplica l铆mites, pero requiere que todo mensaje push muestre una notificaci贸n.

Note:  Desde Gecko 44, la cuota permitida de Push-messages por aplicaci贸n no se ve incrementada cada vez que se emite una nueva notificaci贸n, cuando otra sigue visible, durante el periodo de 3 segundos. Esto ayuda al manejo de casos en los que se reciben rafagas de notificaciones y no todas ellas emiten una notificaci贸n visible. 

Nota: en Chrome las versiones anteriores a la 52, requieren la cnfiguraci贸n de un proyecto en Google Cloud Messaging para el env铆o de Push-Messages, as铆 como el uso del numero de proyecto y la API key asociadas para el env铆o de notificaciones push. Tambien se requiere el detalle de algunos parametros especiales en el app manifest para el uso de este servicio.

Interfaces

PushEvent
Represena una acci贸n push enviada al alcance global (global scope) de un ServiceWorker. Contiene informaci贸n enviada desde una aplicaci贸n a PushSubscription.
PushManager
Provides a way to receive notifications from third-party servers as well as request URLs for push notifications. This interface has replaced functionality offered by the obsolete PushRegistrationManager interface.
PushMessageData
Provee acceso a los datos push enviados por el servidor e incluye metodos para manipular los datos recibidos.
PushSubscription
Provee el URL endpoint para una suscripci贸n y permite la desuscripci贸n de un servicio push.

Service worker: Adiciones

Las siguientes adiciones al Service Worker API han sido especificadas en la Push API, para proveer un punto de entrada al uso de Push messages. Tambien monitorizan y responden a los cambios en los eventos Push y Subscription.

ServiceWorkerRegistration.pushManager Read only
Devuelve una referencia a la interfaz PushManager para el manejo de las suscripciones incluyendo: la suscripci贸n, obteniendo una suscripci贸n activa y accediendo al estado de permiso de push. Este es el punto de inicio para el uso de Push messaging.
ServiceWorkerGlobalScope.onpush
Manipulador de eventos activado, cada vez que ocurre un evento push; Eto es, cada vez que se recibe un push-message del servidor.
ServiceWorkerGlobalScope.onpushsubscriptionchange
Manipulador de eventos activado, cada vez que ocurre un evento pushsubscriptionchange; Por ejemplo, cuando una suscripci贸n ha sido invalidada o esta apunto de serlo. (P.ej. cuando un push service determina un tiempo de expiraci贸n.)

Ejemplos

Mozilla's ServiceWorker Cookbook contiene varios ejemplos Push muy utiles

Specifications

Specification Status Comment
Push API Working Draft Initial definition

Browser Compatibility

We're converting our compatibility data into a machine-readable JSON format. This compatibility table still uses the old format, because we haven't yet converted the data it contains. Find out how you can help!
Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
Basic support 42.0 44.0 (44.0)[1] ?[2] ? ?
PushEvent.data,
PushMessageData
Sin soporte 44.0 (44.0) Sin soporte Sin soporte Sin soporte
Feature Android Android Webview Firefox Mobile (Gecko) Firefox OS IE Mobile Opera Mobile Safari Mobile Chrome for Android
Basic support Sin soporte Sin soporte Sin soporte Sin soporte ?[2] ? ? 42.0
PushEvent.data,
PushMessageData
Sin soporte Sin soporte Sin soporte Sin soporte Sin soporte Sin soporte Sin soporte Sin soporte

[1] Currently available only on desktop versions of Firefox; also, push messages are only delivered when Firefox is running.

[2]: Microsoft Edge status: Under Consideration; Roadmap Priority: Low

See also