usa solo numero llamadas españa emergencia configurar bloqueado apple iphone ios mobile-safari iphone-standalone-web-app

solo - Detener la recarga de la aplicación web lanzada desde la pantalla de inicio del iPhone



iphone bloqueado solo llamadas de emergencia (4)

Creé una aplicación web y la agregué a la pantalla de inicio de mi iPhone. Cuando cambio a otra aplicación y vuelvo, el iPhone vuelve a cargar automáticamente mi aplicación web. Esto rompe el flujo de mi aplicación.

¿Cómo evito que el iPhone vuelva a cargar la aplicación?

Tengo una etiqueta meta compatible con Apple-mobile-web-app habilitada para ocultar la barra de herramientas de Safari y no quiero desactivarla.


Acabo de encontrar esta pregunta relacionada en SO: detener la aplicación web nativa para que no se vuelva a cargar al abrir en iOS

Como parece que es una limitación de Safari, una solución propuesta es mantener el estado de sus aplicaciones web utilizando Javascript y HTML5 localStorage. Cuando se inicie su aplicación web, verifique el estado persistente y cárguelo si está disponible.

Puede leer sobre cómo usar localStorage en Safari aquí: http://developer.apple.com/library/safari/#documentation/iPhone/Conceptual/SafariJSDatabaseGuide/Introduction/Introduction.html#//apple_ref/doc/uid/TP40007256-CH1-SW1

Espero que te ayude. Al menos lo hizo por mí, ya que tuve el mismo problema que tú. :-)


La respuesta corta es que no puedes controlar esto. A veces, iOS mantendrá una aplicación web activa en segundo plano, otras veces la matará. Está completamente relacionado con la cantidad de memoria disponible en el dispositivo.

Por lo tanto, su mejor enfoque es minimizar los problemas presentados por esta recarga. Asegúrese de que su aplicación web actualice la URL cuando se mueva de una vista a otra, ya sea cambiando location.hash o usando history.pushState() . Esto le permitirá volver a cargar cualquier vista que el usuario estuviera antes de cambiar de aplicación. Hay eventos de pageshow pagehide y de pageshow que le permiten ejecutar código cuando el usuario se aleja de su aplicación. Aproveche la oportunidad para almacenar el estado local en localStorage y / o IndexedDB, luego recupere los datos cuando se vuelva a abrir la aplicación web.


Actualización: como esta respuesta está recibiendo downvotes, agregué esta explicación.

Es posible que su problema no sea la recarga real, pero el hecho de que Mobile Safari trate la caché y las cookies de su usuario de manera diferente cuando su aplicación web se abre a través del navegador, que cuando se ''instala'' como una aplicación web en la pantalla de inicio. Aunque las soluciones propuestas aquí que usan localStorage funcionarán, son mucho trabajo para la lógica del lado del cliente que se puede evitar si su servidor ya es responsable de mantener el estado de sesión de su usuario. La solución de 30 segundos es simplemente establecer explícitamente la cookie de sesión para que tenga una vida útil más larga.

Esto le permite mantener el estado intacto incluso entre reinicios del dispositivo, por lo que, aunque técnicamente no impida que la aplicación web se vuelva a cargar cuando se inicie desde la pantalla de inicio, es una forma fácil de restaurar el estado para el usuario sin él / ella notando la recarga, que en muchos casos sospecho que es el verdadero problema.

Para una discusión más elaborada de esta estrategia y ejemplos de código, eche un vistazo a estas preguntas y mis respuestas allí:


Encontré un hack, probado en iOS 11.4.1/12.0
Abra la ventana de carga de archivos y luego vuelva a la pantalla de inicio.
La aplicación sigue funcionando, en mi caso el audio se está reproduciendo y localStorage está actualizando

Pruebas: https://youtu.be/heehLUhGKYY

PD. note cómo el progreso de la canción cambia cuando buscamos, esto prueba que la aplicación funciona en segundo plano