guidelines bar ios objective-c cocoa-touch

bar - iOS Mantener la pantalla de inicio antigua y el ícono de la aplicación después de la actualización



search bar ios (18)

Tengo una aplicación donde recientemente reemplacé las imágenes de inicio y los íconos de la aplicación, eliminé todos los activos antiguos de todas partes del proyecto. Cuando actualizo la aplicación de la versión anterior a la nueva versión simplemente construyendo en Xcode, todo está bien. Sin embargo, si tengo instalada la versión anterior de mi aplicación, actualícela desde TestFlight, cada vez que cierre la aplicación y luego la reinicie, la imagen de inicio anterior aparece brevemente antes de mostrar la nueva imagen de inicio. De manera similar, cuando cierro la aplicación, el ícono de la aplicación anterior parpadea brevemente antes de volver a la nueva.

Abrí la aplicación usando iExplorer y noté que hay una imagen de la pantalla de inicio antigua guardada en el directorio /Library/Caches/Shapshots (no sé cómo o por qué llegó allí). Cuando lo elimino manualmente a través de iExplorer, deja de aparecer. Sin embargo, cuando intento eliminarlo con código usando los métodos NSFileManager , recibo errores que dicen que tengo prohibido eliminar archivos en este directorio.

¿Alguien ha experimentado esto antes y tiene algún consejo?


  1. Eliminar tu aplicación del dispositivo
  2. Apague el dispositivo
  3. Dispositivo de encendido
  4. Instalar y ejecutar la aplicación.

¿Qué funcionó para mí?

  • Eliminar el controlador de escena y vista de LaunchScreen y crear uno nuevo (asegúrese de configurarlo como "Controlador de vista inicial" en el Inspector de atributos).

Lo que no funcionó para mí:

  • Eliminar la aplicación
  • Reiniciar el iPhone, Mac o Xcode
  • Eliminar datos derivados
  • Eliminar el contenedor del dispositivo
  • Limpieza
  • Quemando 3 muñecas vudú Steve Jobs

Desinstale su aplicación, reinicie su teléfono e instale su aplicación nuevamente ... Esto realmente se solucionó en mi caso.


Encontré una solución alternativa, ¿y si realmente quieres solucionar este problema? Apple tiene algunos mecanismos para almacenar en caché las imágenes de la pantalla de inicio que indexan por nombre de archivo de imagen.

Cuando cambia cualquier imagen en la pantalla de inicio y desea ver esos cambios en la próxima ejecución de inmediato. utilice el nombre de la nueva imagen, la imagen que cambió y enlace al nuevo archivo de imagen en storyboard o xib.

Ejecutar nuevamente, verá aparecer nuevos cambios.


Esta es la forma más rápida que encontré para resolver este problema, aunque suena estúpido:

  1. Haga clic derecho en LaunchScreen.xib o en su archivo de pantalla de inicio y seleccione Remove file luego seleccione Remove to trash . Esto eliminará todas las referencias del archivo y sus actualizaciones anteriores de su proyecto.

  2. Vaya a la papelera y arrastre y suelte el archivo nuevamente en su proyecto xCode (dentro de yourProjectName ).

  3. Limpiar y reconstruir.


Esto funcionó para mí: http://arsenkin.com/launch_screen_image_cache.html

Nuevamente, gracias al hilo al que he hecho referencia anteriormente, encontré una manera de resolver este problema: nombra tu nueva imagen de manera diferente a la que había antes en caso de que tu nueva tenga el mismo nombre que la anterior y la saqué del * .xcassets carpeta al directorio del proyecto y haga referencia a él en su UIImageView. Y eso es. Suena estúpido fácil, pero oh, qué tanta ira tenía.


He podido obtener de forma confiable el caché del trampolín borrado para probar los cambios de la imagen de inicio haciendo esto:

  1. Eliminar tu aplicación del dispositivo
  2. Apague el dispositivo
  3. Encienda el dispositivo, instale y ejecute la aplicación.

La imagen se actualiza correctamente cada vez. Es una pena que necesite apagar el dispositivo para que funcione, pero al menos he podido avanzar de esta manera. Espero que esto ayude a alguien.

En el caso del simulador, solo debería reiniciar el simulador.


Honestamente, no me arriesgué a publicar sin estar seguro de si esto se actualizará o no.

Entonces, suponiendo que esté usando xcassets, una solución simple es:

  1. Eliminar el conjunto de imágenes anterior
  2. Recree uno con un nombre diferente y agregue sus imágenes de pantalla de inicio
  3. Actualice su guión gráfico para usar esta ''nueva'' referencia de conjunto de imágenes

¡Se actualizará seguro! (Incluso probé con la aplicación ya instalada en el dispositivo). No es necesario limpiar el caché del dispositivo más o menos.


Intente abrir el simulador, vaya a Hardware -> Borrar todo el contenido y la configuración.


Ok, entonces descubrí el problema. En la versión anterior de mi aplicación, estábamos usando una pantalla de inicio XIB. En algún momento del desarrollo de esta nueva versión, el xib se eliminó y se reemplazó solo con imágenes de lanzamiento estáticas.

La solución es usar una pantalla de inicio XIB. Noté que en el momento en que usé una pantalla de inicio xib por primera vez, el archivo almacenado en el directorio de instantáneas fue reemplazado por la instantánea de xib.


Para el simulador, simplemente Reset Contents and Settings...


Simplemente conecte su dispositivo, vaya a Xcode> Ventana> Dispositivos> Su dispositivo, ahora en aplicaciones instaladas, seleccione su aplicación, haga clic derecho y descargue el contenedor, vaya al archivo generado, haga clic derecho, Mostrar contenido del paquete, Datos de aplicación, Biblioteca, Caches, y eliminar archivos. Ahora ve a Xcode> Ventana> Dispositivos> Tu dispositivo> tu aplicación y haz clic derecho para reemplazar los contenedores.


Springboard utiliza estos cachés para hacer que el cambio de aplicaciones sea rápido. Este no es un problema que afectará a los usuarios de producción y, en teoría, debería desaparecer la próxima vez que Springboard decida capturar su aplicación.

Dicho esto, este no es un problema que pueda solucionar. Este es un error en el código de Apple, no el tuyo.


También enfrenté el mismo problema. Ocurre porque el simulador / dispositivo iOS almacena en caché la imagen de inicio cuando inicia la aplicación por primera vez. Agregué algunas modificaciones a la respuesta de Brian Trzupek :

  1. Eliminar el conjunto de imágenes de los activos de Xcode (por ejemplo, launch_image)
  2. Agregue un nuevo conjunto de imágenes y agréguele imágenes.
  3. Apague y encienda el dispositivo iOS. (Restablecer contenido y configuración para simulador).
  4. Limpie la carpeta de compilación de Xcode (presione comando + opción + shift + K ).
  5. Elimine la aplicación del dispositivo / simulador (si está disponible).
  6. Corre de nuevo.

Tenía este problema también. Siendo un novato total, ingenuamente cambié LaunchScreen.storyboard a LaunchScreen.xib. La ejecución falló (duh), así que la cambié a .storyboard volví a ejecutar la aplicación solo para probar que no había estropeado nada más, y la pantalla anterior no apareció primero. Entonces, lo que sea que hice, debe haber vaciado el viejo caché.


Tuve el mismo problema, pero solo con la imagen utilizada en el guión gráfico de la pantalla de inicio. Mover la imagen del catálogo de activos cambiando su nombre al paquete de aplicaciones (por ejemplo, la imagen antigua establecida en el catálogo de activos se llamaba launch_logo, y la imagen en el paquete de aplicaciones se llama launchscreen_logo.png) nos resolvió el problema.


@InkGolem

Este no es un problema que afectará a los usuarios de producción.

es verdad.

Estaba enfrentando este problema cuando cambié la pantalla de inicio, la pantalla de bienvenida y el ícono de la aplicación. Intenté todos los métodos, pero no funcionó. Finalmente, acabo de publicar mi aplicación y la descargué de la tienda de aplicaciones con el dispositivo que no usé para el desarrollo . ¡SplashScreen y el ícono de la aplicación funcionan normalmente!


Xcode 10 / iOS 12

Después de probar todas las cosas mencionadas anteriormente, tuve que eliminar la vista de imagen de LaunchScreen y reemplazarla por una nueva.