2011-06-07 14 views
27

He estado trabajando mucho para conseguir que algunas aplicaciones web trabajen sin conexión en iOS utilizando el manifiesto HTML5. Me encontré con los problemas típicos de todos los demás y los solucioné y todo parece funcionar bien, excepto en el caso en que guardo la aplicación web en el escritorio de mi iPhone 4.iOS: ¿Deshabilitó Apple la capacidad fuera de línea de HTML5 para aplicaciones web guardadas en la pantalla de inicio?

Si hago esto y luego habilitar el modo avión, recibo la siguiente alerta cuando intento acceder a la aplicación a través de la pantalla de inicio: "su nombre de aplicación no se pudo abrir porque no está conectado a Internet". Accediendo a la aplicación a través del navegador Safari funciona bien sin conexión.

Si alguien sabe si esto es un error de mi parte, o incluso la pequeña posibilidad de que funcione, dígaselo.

Incluso la descarga de la nueva aplicación web Financial Times (muy bien hecha con un amplio soporte de almacenamiento local) da como resultado un error al acceder sin conexión desde la pantalla de inicio.

especificaciones técnicas: Operando iPhone 4 con iOS 4.3.3 (pero también vio el problema en el punto 4.3.2)

+0

@ Nick: sin duda una conspiración :) –

+1

@Mauvis Ledford he acaba de comprobar http://sixrevisions.com/web-development/html5-iphone-app/ y que doesn no funciona en mi iPhone4 iOS 4.3.1. Creo que Apple rompió esto, ha funcionado antes. –

+2

@Mauvis Ledford Estaría muy interesado en la depuración adicional, ya que estamos recibiendo algunos informes de que la aplicación FT no funciona sin conexión. Las pruebas aquí (en iPad 4.2 y 4.3.3 y iPhone 4.3.3) muestran que la aplicación funciona sin conexión en las pantallas de inicio o en el dock; Incluso traté de moverme fuera de línea y luego moverlo de una pantalla al muelle, ¡todavía funciona! Definitivamente hay un poco de vudú relacionado con los manifiestos en alguna parte, pero no puedo precisar este * algo * final ... (FWIW, parece que borrar el caché y las bases de datos, luego reiniciar el dispositivo, parece ponerlo en funcionamiento si hay son errores). – Rowan

Respuesta

15

Después de leer los comentarios (especialmente de Rowan) me encontré con más pruebas y encontró la respuesta:

No, Apple no deshabilitó la capacidad fuera de línea de HTML5 para aplicaciones web guardadas en la pantalla de inicio, funciona, en su mayor parte. Hay un error que hará que no funcione. No parece tener nada que ver con su configuración de manifiesto (a menos que tal vez descargó un manifiesto defectuoso o un manifiesto incompleto en un punto). No sabemos qué tan extendido está, pero la solución es borrar su caché de Mobile Safari.

He aquí los pasos:

  1. Cerrar la aplicación web (asegúrese de que no es pegarse alrededor en el fondo).
  2. Caché de Safari móvil desactivada: Configuración> Safari> Borrar caché
  3. Volvió a abrir la aplicación (para el almacenamiento en caché).
  4. Cierre la aplicación web nuevamente (asegúrese de que no se quede en el fondo).
  5. Habilitado "Modo avión": Configuración> Modo avión
  6. Volvió a abrir la aplicación.

Ahora debería funcionar sin conexión. Si no es así, es probable que sea un problema de manifiesto por separado en su aplicación. Parece una extraña falla con el caché del navegador, ¿o quizás el caché estaba completamente lleno? Quién sabe, pero esa es la respuesta. Gracias chicos.

+0

Lo intentaré mañana, y gracias por la respuesta. –

+2

Una pequeña advertencia adicional en este frente: aunque probablemente mejore las situaciones para la pantalla de inicio, borrar el caché * romperá * uso manifiesto en MobileSafari. Después de borrar el caché, los swaps de manifiesto fallarán con errores no especificados en MobileSafari * hasta que se reinicie MobileSafari *. Presumiblemente, esto no afecta las aplicaciones de pantalla de inicio porque se reinician cada vez ... (Las personas que usen versiones beta de versiones futuras pueden encontrar resuelto este error en particular ...) – Rowan

+0

Solo quería confirmar que seguir esos pasos también me ayudó a resolver el problema en mi iPhone. La misma aplicación web que desarrollé funcionaba bien en "Modo avión" en un iPad, pero el iPhone se quejaba de que "el nombre de la aplicación web no se podía abrir porque no está conectado a Internet". Después de borrar la caché de Safari móvil con los pasos anteriores, la aplicación web ahora está funcionando en mi iPhone. –

2

añadir esto a su html:

http://jonathanstark.com/blog/2009/09/27/debugging-html-5-offline-application-cache/

me pareció enormemente útil - a pesar de que he creado mi archivo de manifiesto y lo comparó a los manifiestos de otras personas esta secuencia de comandos de depuración de JavaScript me dio la pista que nunca habría encontrado lo contrario. Aparentemente tenía un error de sintaxis en mi manifiesto ... para resumir, tuve que eliminar todo y agregar las rutas a cada archivo/imagen una por una. El resultado final fue el mismo sin embargo funcionó ... ¡qué raro! ¿Los espacios en blanco/comentarios afectan la sintaxis del archivo?

+0

Enlace roto aquí. – Marc

2

iOS parece ser muy sensible a los problemas de carga cuando no está conectado.

Recibí el error "No se pudo abrir" cuando no estaba conectado a una página en la que estaba trabajando. El problema resultó ser que la página creaba un iframe que apuntaba a un sitio que no tenía una AppCache. La eliminación de esos iframes solucionó el problema.

En mi caso, lo manejé usando window.navigator.standalone que le indica si está ejecutando una aplicación de pantalla de inicio de iOS. El código se veía así:

if (!navigator.standalone) insertFrames(); 
Cuestiones relacionadas