1 votos

¿Puedo hacer que un sitio web siga funcionando cuando está en espera?

Estoy desarrollando una sencilla aplicación web que se utilizará para el seguimiento de la posición GPS. La idea general es que cada par de minutos enviará la ubicación GPS a un servidor con una petición AJAX. Hay que tener en cuenta que el dispositivo estará conectado a la corriente permanentemente.

Lo ideal es que esto siga funcionando en segundo plano cuando la pantalla esté apagada. He hecho una prueba con un Nexus con Lollipop y Chrome y he tenido un éxito limitado. Las solicitudes siguen enviando durante 5-10 minutos después de que la pantalla está apagada, entonces se detienen.

Curiosamente, parece que sigue habiendo peticiones ocasionales. Para mis pruebas estoy haciendo un intervalo de peticiones de 10 segundos, en el mundo real será más bien de 5 a 10 minutos. ¿Algún tipo de cola? Si esto es una cosa y puedo averiguar cómo trabajar con él de forma fiable podría funcionar.

¿Hay alguna forma de conseguir que sigan enviando indefinidamente? ¿Configuración en el sistema operativo/navegador, o un navegador diferente (o ambos) tal vez?

1voto

Mikhail Naganov Puntos 251

HTML5 ServiceWorker parece soportar lo que necesitas a través de la función BackgroundSync / PeriodicSync. Sin embargo, dado que ServiceWorker es todavía un esfuerzo en curso, no estoy seguro de qué características están actualmente implementadas en Chrome. No pude encontrar ninguna buena demostración de esto, sólo propuestas: https://github.com/clelland/BackgroundSync/blob/master/explainer.md

Cordova ha añadido recientemente soporte para la sincronización en segundo plano: https://github.com/MobileChromeApps/cordova-plugin-service-worker-background-sync pero esto requiere que construyas una aplicación para Android.

Sin el soporte explícito del navegador para tal característica, todos tus esfuerzos ad hoc serán una pérdida de tiempo, ya que tu código estará garantizado para trabajar sólo cuando el navegador esté en primer plano. De lo contrario, el propio navegador puede ser eliminado por el sistema operativo, y no podrá seguir ejecutando el código de su página. La función de sincronización periódica proporcionada por ServiceWorker implica que el navegador programaría trabajos periódicos utilizando los correspondientes servicios de Android, como harías en una aplicación Java.

0 votos

Gracias. Voy a echar un vistazo a ese primer enlace en el próximo par de días y ver si puedo lanzar juntos una rápida prueba de concepto para probar con. Si no, Cordova podría ser una opción también - la creación de una aplicación que no es más que un iframe que apunta a la página web real podría hacer lo que necesito sin soplar el presupuesto. Informaré al respecto.

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X