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 aPushSubscription
. 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
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
- 驴C贸mo usar la API Push?
- Push API Demo, on Github
- Push Notifications on the Open Web, Matt Gaunt
- Service Worker API