¿Por qué las aplicaciones iOS firmadas con desarrollo o certificates empresariales se inician más lentamente?

No puedo evitar notar en mi iPhone 5 que las aplicaciones que están firmadas con mi certificate de desarrollo y el certificate de distribución empresarial de mi empresa demoran aproximadamente 4 segundos en iniciarse o activarse. Este es el time que transcurre entre tocar el ícono de la aplicación y ver la image de inicio, que obviamente no incluye el código de initialization de la aplicación.

Es un incómodo 4 segundos en el que el ícono de la aplicación permanece atenuado después de ser tocado y la pantalla de inicio se congela (ni siquiera puede desplazarse hacia la derecha / izquierda).

Lo extraño es que toma aproximadamente la misma cantidad de time para volver a activar la aplicación desde el background (es decir, iniciar la aplicación, esperar hasta que se ejecute, presionar el button de inicio y luego tocar de nuevo el icono de la aplicación de nuevo).

Las preguntas son:

  • ¿Qué está causando esto?
    • Mi instinto se echa la culpa de Springboard tratando de verificar los certificates de firma en cada toque del ícono de la aplicación. Sin embargo, no puedo probar esto.
  • ¿Cómo puedo networkingucir este time de congelación de lanzamiento? (¿si es posible?)

Probé esto usando iOS 8.3 en iPhone 5

En mi caso, creo que se debió a que los dispositivos tenían literalmente una tonelada de diferentes perfiles de aprovisionamiento instalados en ellos (por alguna razón, la input "Perfiles" en la aplicación Configuración ya no está disponible … pero se muestran en Window / Devices / Show Provisioning Profiles... ).

En teoría, debería eliminar todos los perfiles dentro de la window "Dispositivos" de Xcode. Sin embargo, al less a partir de Xcode 6 en mi entorno, esto no responde (haciendo clic en el button del menu o presionando la tecla Suprimir ) hasta el punto de casi tocar la pelota, y la list mostrada a veces parece ser muy inconsistente de una connection del dispositivo a la siguiente (quizás se almacene en caching? ¿un error de Xcode?).


TL, DR:

Así que, en cambio, acabo de restablecer mis dispositivos a la configuration de fábrica ("Eliminar todas las configuraciones y datos"), y ahora mis aplicaciones se inician inmediatamente (iPad Air) y casi inmediatamente (iPod Touch 5th Gen).

Creo ( pero esto necesita confirmación ) que la razón por la cual todos esos perfiles de aprovisionamiento donde se instaló en los dispositivos en primer lugar es que, en el panel General / Identidad del objective, especificé el "Equipo". Ahora tengo estas configuraciones:

  1. Destino / General / Identidad

    Ientificador de package: com.MyCompanyName.AppName

    Equipo: ninguno

(Configurar el equipo parece hacer que Xcode instale todos los perfiles de aprovisionamiento desde el portal del desarrollador en el dispositivo …?)

  1. Configuración de objective / compilation / firma de código

    Identidad de firma de código: Desarrollador de iOS

    Perfil de aprovisionamiento: automático

… y en Run, solo uno de mis perfiles (uno de los "iOS Provisioning Team Profile" gestionados por Xcode) se instala en el dispositivo.

Apéndice: Buscando en Internet "Xcode especificar equipo por qué" proporcionó esta página de documentation de Apple al configurar el equipo de Xcode. Espero eso ayude.


ACTUALIZACIÓN: sigue siendo el mismo que el de Xcode 7.x

Elimine todos los perfiles de aprovisionamiento duplicates en su dispositivo. Puede hacer esto en Xcode-> Dispositivos, haga clic derecho en su dispositivo "Mostrar Perfiles de aprovisionamiento …". En mi caso, había instalado más de 300 perfiles diferentes.

Después de implementar de nuevo, mi aplicación se lanzó de inmediato en lugar de esperar 5-8 segundos cada vez.

¿Podría ser que el dispositivo esté revisando comstackciones que no sean de la aplicación contra una list de revocación de certificates ? ¿Y esa list posiblemente esté en línea ?

Si este último fuera cierto, podría get un lanzamiento más rápido habilitando el modo Avión .

Tuve un problema similar con mi aplicación. Estaba usando Parse y FBLogin. Probé todo en esta página. Luego intenté desactivar todas las opciones de lanzamiento en Appdelegate y eliminar la carpeta Assets.xcassets, pero fue en vano. Finalmente respaldé mi file info.plist y lo copié en un file de Plist de una aplicación que sabía que se estaba ejecutando correctamente. Eso solucionó el problema. Luego volví y recreé el file Plist con los contenidos de la pluma más antigua. Me di count de que la configuration de security de transporte de aplicaciones y LSApplicationQueriesSchemes estaban causando el problema. La aplicación ahora funciona bien sin esas inputs, pero las añadiré más tarde si es necesario.

También tuve este problema, pero no hay perfiles duplicates de aprovisionamiento en mi dispositivo (ipad). Entonces encontré el ocsp causando el retraso de lanzamiento.

incluso Apple dice en ( validation del certificate )

"La respuesta OCSP se almacena en la memory caching en el dispositivo durante el período de time especificado por el server OCSP, actualmente, entre tres y siete días".

Pero el OCSP aparece después de unas pocas horas.