2011-01-03 9 views
11

He creado una aplicación web utilizando todos los enlaces recomendados y las metaetiquetas para safari, p. Ej.¿Es posible forzar iphone/ipod para actualizar apple-touch-icon una vez que webapp se agrega a la pantalla de inicio?

<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" /> 
<meta name="apple-mobile-web-app-capable" content="yes" /> 
<meta name="apple-mobile-web-app-status-bar-style" content="black" /> 
<link rel="apple-touch-startup-image" href="/startup.png" /> 
<link rel="apple-touch-icon" href="/apple-touch-icon.png" /> 
<link rel="apple-touch-icon" sizes="72x72" href="/apple-touch-icon-ipad.png" /> 
<link rel="apple-touch-icon" sizes="114x114" href="/apple-touch-icon-iphone4.png" /> 

Sin embargo, mi problema es si el startup.png o cualquiera de los toque-icono de la manzana archivos de imagen se actualizan en el servidor web, no parece como el iPhone de un usuario o iPod retreive el archivo actualizado una vez que ha sido guardado en su pantalla de inicio (supongo que está en caché de alguna manera o algo así). Funciona para eliminar la aplicación web de la pantalla de inicio y volver a agregarla. Pero, ¿hay alguna forma de que la aplicación sepa que necesita actualizar estas imágenes sin que el usuario tenga que eliminarlas y volver a agregarlas?

Respuesta

13

Han pasado algunos años desde que esta pregunta fue hecha/respondida y estoy aquí para informar que esto ahora es posible.

En iteraciones más recientes de iOS, el icono de Apple Touch que se muestra en la pantalla de inicio se almacena en la memoria caché como cualquier otra parte del contenido del sitio web. Simplemente cambiando el nombre de la imagen, forzará el acceso directo de la pantalla de inicio para actualizar el ícono la próxima vez que se inicie el acceso directo.

Sin embargo, para cumplir con las convenciones de nomenclatura de Apple, simplemente puede agregar variables de URL a la referencia cada vez que desee que el icono se vuelva a descargar y seguir llamando a la imagen apple-touch-icon.png.

Lo que he hecho para automatizar este problema (en PHP) es agregar la fecha/hora de la última modificación a la imagen. Por ejemplo:

<link rel="apple-touch-icon" href="apple-touch-icon.png?m=<?php echo filemtime('apple-touch-icon.png'); ?>" /> 

Esto da salida:

<link rel="apple-touch-icon" href="apple-touch-icon.png?m=1415832495" /> 

Ahora, usted no tiene que hacer nada más que literalmente sobrescribir la imagen y todo lo demás sucederá de forma automática. Cuando cambias la imagen, la hora modificada cambia y ya no coincide con lo que el usuario tiene en la memoria caché, por lo que obliga a una nueva descarga. ¡Sencillo!


vieja respuesta: he hecho un montón de investigación de esta tratando de encontrar un camino. Lamentablemente, no es posible. Se debe quitar y volver a agregar a la pantalla de inicio para que se use el nuevo icono.

+0

Hay una API privada para hacer esto, pero no creo que podamos usarlo. Si observa que la aplicación de calendario tiene el icono actualizado todos los días para cambiar la fecha. –

+0

Dentro de una aplicación, puede haber una forma de hacerlo. Sin embargo, el póster original pregunta si es posible cambiar el ícono si marca un sitio web en la pantalla de inicio, no desde una aplicación. –

+0

Aceptaré a regañadientes 'no posible' como la respuesta. – TKTS

0

He visto actualizar los iconos, pero no creo que sea posible afectar esta actualización de ninguna manera. Me di cuenta de los íconos actualizados después de que se reinició el teléfono, pero no he mirado lo suficiente como para decir algo concluyente.

0

Eliminar y volver a agregar la página web/webapp a la pantalla de inicio puede que ni siquiera sea suficiente. Sólo traté de

  1. eliminar el marcador de la pantalla de inicio
  2. vuelva a cargar la página en Safari
  3. agregar el marcador a homescreen

==> que sigue mostrando el viejo icono que parece ha guardado en caché en alguna parte :(

+0

funciona en mi iphone 5 si primero toca el botón para marcar a la pantalla de inicio, luego cancelar, luego volver a cargar la página, luego toque el botón para marcar a la pantalla de inicio - ahora debería ver la imagen actualizada –

0

Dentro de mi aplicación web, si cambio el archivo startup.png por uno nuevo, la primera vez que vuelva a cargar la aplicación desde la pantalla d imagen. Al cerrar y volver a abrir la aplicación, se muestra la nueva imagen de inicio.png. iOS 4.2.1. Por cierto, lo mismo aplica para el ícono.

2

Acabo de probar una teoría en el Iphone 5 y el iPad 2, y funcionó para ambos. Similar al favicon, puedes forzar al nuevo favicon a tirar cambiando el href. En lugar de href="/apple-touch-icon.png" utilicé href="/apple-touch-icon.png?ver=1.1" y sacó el nuevo ícono cuando se visitó el sitio (sin borrar y volver a agregar a la pantalla de inicio).

+0

Esto resuelve el problema y también funciona para apple-touch-startup-image que también tiene los mismos problemas que apple-touch-icon. (Confirmado en iOS 8) – Jay

Cuestiones relacionadas